Oh, and I removed the new ArrayList<Category>(product.getCategories()) as well.

Martijn

On Thu, Jun 16, 2011 at 3:56 PM, Martijn Dashorst
<[email protected]> wrote:
> The application used in
> http://www.jtict.com/blog/rails-wicket-grails-play-lift-jsp/ has been
> controversial as it pits all popular frameworks against one another.
> I've tried to replicate the results on my box with AB, and did some
> modifications to the code:
>  - removed the image from the markup: browsers will hit the
> non-existent image causing long load times
>  - did the categories list in a similar way that the Tapestry
> implementation did: using a StringBuilder (saves ~300ms for a single
> user with 5000 items)
>  - randomized the results for each query to the products() method such
> that caching the results is not an option
>
> I couldn't replicate the tapestry results with these settings (instead
> of being almost constant time, it now is linear but 1.5x faster than
> wicket). I'm not sure if the author actually looked at the results of
> the tapestry tests, but it seems to me that something went wrong.
>
> The code has been altered with the above changes, including changing
> the ListView into a RepeatingView, and rendering the categories in a
> StringBuilder. Here are the results of an ab test on my laptop for 200
> products and 32 concurrent users:
>
> dashorst$ ab -c 32 -n 10240 http://localhost:8080/wicketapp/products3/200
> This is ApacheBench, Version 2.3 <$Revision: 655654 $>
> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
> Licensed to The Apache Software Foundation, http://www.apache.org/
>
> Benchmarking localhost (be patient)
> Completed 1024 requests
> Completed 2048 requests
> Completed 3072 requests
> Completed 4096 requests
> Completed 5120 requests
> Completed 6144 requests
> Completed 7168 requests
> Completed 8192 requests
> Completed 9216 requests
> Completed 10240 requests
> Finished 10240 requests
>
>
> Server Software:        Jetty(6.1.16)
> Server Hostname:        localhost
> Server Port:            8080
>
> Document Path:          /wicketapp/products3/200
> Document Length:        34689 bytes
>
> Concurrency Level:      32
> Time taken for tests:   57.509 seconds
> Complete requests:      10240
> Failed requests:        9670
>   (Connect: 0, Receive: 0, Length: 9670, Exceptions: 0)
> Write errors:           0
> Total transferred:      354991304 bytes
> HTML transferred:       352820424 bytes
> Requests per second:    178.06 [#/sec] (mean)
> Time per request:       179.714 [ms] (mean)
> Time per request:       5.616 [ms] (mean, across all concurrent requests)
> Transfer rate:          6028.16 [Kbytes/sec] received
>
> Connection Times (ms)
>              min  mean[+/-sd] median   max
> Connect:        0    1   1.6      0      17
> Processing:    11  179 123.2    163    1000
> Waiting:       11  171 123.1    154     999
> Total:         12  179 123.3    164    1000
>
> Percentage of the requests served within a certain time (ms)
>  50%    164
>  66%    218
>  75%    248
>  80%    268
>  90%    337
>  95%    418
>  98%    491
>  99%    552
>  100%   1000 (longest request)
>
> The same test but then using 16 users:
>
> dashorst$ ab -c 16 -n 10240 http://localhost:8080/wicketapp/products3/200
> This is ApacheBench, Version 2.3 <$Revision: 655654 $>
> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
> Licensed to The Apache Software Foundation, http://www.apache.org/
>
> Benchmarking localhost (be patient)
> Completed 1024 requests
> Completed 2048 requests
> Completed 3072 requests
> Completed 4096 requests
> Completed 5120 requests
> Completed 6144 requests
> Completed 7168 requests
> Completed 8192 requests
> Completed 9216 requests
> Completed 10240 requests
> Finished 10240 requests
>
>
> Server Software:        Jetty(6.1.16)
> Server Hostname:        localhost
> Server Port:            8080
>
> Document Path:          /wicketapp/products3/200
> Document Length:        34290 bytes
>
> Concurrency Level:      16
> Time taken for tests:   54.005 seconds
> Complete requests:      10240
> Failed requests:        6161
>   (Connect: 0, Receive: 0, Length: 6161, Exceptions: 0)
> Write errors:           0
> Total transferred:      355066608 bytes
> HTML transferred:       352895728 bytes
> Requests per second:    189.61 [#/sec] (mean)
> Time per request:       84.383 [ms] (mean)
> Time per request:       5.274 [ms] (mean, across all concurrent requests)
> Transfer rate:          6420.58 [Kbytes/sec] received
>
> Connection Times (ms)
>              min  mean[+/-sd] median   max
> Connect:        0    0   1.0      0      16
> Processing:    11   84  51.2     74     397
> Waiting:        8   77  49.4     66     397
> Total:         11   84  51.2     75     398
>
> Percentage of the requests served within a certain time (ms)
>  50%     75
>  66%     97
>  75%    113
>  80%    124
>  90%    154
>  95%    182
>  98%    217
>  99%    239
>  100%    398 (longest request)
>
> Now with 8 users:
>
> dashorst$ ab -c 8 -n 10240 http://localhost:8080/wicketapp/products3/200
> This is ApacheBench, Version 2.3 <$Revision: 655654 $>
> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
> Licensed to The Apache Software Foundation, http://www.apache.org/
>
> Benchmarking localhost (be patient)
> Completed 1024 requests
> Completed 2048 requests
> Completed 3072 requests
> Completed 4096 requests
> Completed 5120 requests
> Completed 6144 requests
> Completed 7168 requests
> Completed 8192 requests
> Completed 9216 requests
> Completed 10240 requests
> Finished 10240 requests
>
>
> Server Software:        Jetty(6.1.16)
> Server Hostname:        localhost
> Server Port:            8080
>
> Document Path:          /wicketapp/products3/200
> Document Length:        34290 bytes
>
> Concurrency Level:      8
> Time taken for tests:   48.672 seconds
> Complete requests:      10240
> Failed requests:        6308
>   (Connect: 0, Receive: 0, Length: 6308, Exceptions: 0)
> Write errors:           0
> Total transferred:      355046233 bytes
> HTML transferred:       352875353 bytes
> Requests per second:    210.39 [#/sec] (mean)
> Time per request:       38.025 [ms] (mean)
> Time per request:       4.753 [ms] (mean, across all concurrent requests)
> Transfer rate:          7123.72 [Kbytes/sec] received
>
> Connection Times (ms)
>              min  mean[+/-sd] median   max
> Connect:        0    0   0.9      0      10
> Processing:    11   38  19.9     33     203
> Waiting:        9   35  18.6     30     203
> Total:         11   38  20.0     33     204
>
> Percentage of the requests served within a certain time (ms)
>  50%     33
>  66%     41
>  75%     47
>  80%     53
>  90%     65
>  95%     77
>  98%     93
>  99%    105
>  100%    204 (longest request)
>
> And with 4 users:
>
> dashorst$ ab -c 4 -n 10240 http://localhost:8080/wicketapp/products3/200
> This is ApacheBench, Version 2.3 <$Revision: 655654 $>
> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
> Licensed to The Apache Software Foundation, http://www.apache.org/
>
> Benchmarking localhost (be patient)
> Completed 1024 requests
> Completed 2048 requests
> Completed 3072 requests
> Completed 4096 requests
> Completed 5120 requests
> Completed 6144 requests
> Completed 7168 requests
> Completed 8192 requests
> Completed 9216 requests
> Completed 10240 requests
> Finished 10240 requests
>
>
> Server Software:        Jetty(6.1.16)
> Server Hostname:        localhost
> Server Port:            8080
>
> Document Path:          /wicketapp/products3/200
> Document Length:        34290 bytes
>
> Concurrency Level:      4
> Time taken for tests:   45.238 seconds
> Complete requests:      10240
> Failed requests:        6134
>   (Connect: 0, Receive: 0, Length: 6134, Exceptions: 0)
> Write errors:           0
> Total transferred:      355063755 bytes
> HTML transferred:       352892875 bytes
> Requests per second:    226.36 [#/sec] (mean)
> Time per request:       17.671 [ms] (mean)
> Time per request:       4.418 [ms] (mean, across all concurrent requests)
> Transfer rate:          7664.91 [Kbytes/sec] received
>
> Connection Times (ms)
>              min  mean[+/-sd] median   max
> Connect:        0    0   0.2      0       7
> Processing:    11   17   2.4     18      43
> Waiting:       10   17   2.5     17      41
> Total:         11   18   2.4     18      43
>
> Percentage of the requests served within a certain time (ms)
>  50%     18
>  66%     18
>  75%     19
>  80%     19
>  90%     20
>  95%     21
>  98%     23
>  99%     25
>  100%     43 (longest request)
>
> And finally with 2 users:
>
> dashorst$ ab -c 2 -n 10240 http://localhost:8080/wicketapp/products3/200
> This is ApacheBench, Version 2.3 <$Revision: 655654 $>
> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
> Licensed to The Apache Software Foundation, http://www.apache.org/
>
> Benchmarking localhost (be patient)
> Completed 1024 requests
> Completed 2048 requests
> Completed 3072 requests
> Completed 4096 requests
> Completed 5120 requests
> Completed 6144 requests
> Completed 7168 requests
> Completed 8192 requests
> Completed 9216 requests
> Completed 10240 requests
> Finished 10240 requests
>
>
> Server Software:        Jetty(6.1.16)
> Server Hostname:        localhost
> Server Port:            8080
>
> Document Path:          /wicketapp/products3/200
> Document Length:        34691 bytes
>
> Concurrency Level:      2
> Time taken for tests:   55.005 seconds
> Complete requests:      10240
> Failed requests:        7532
>   (Connect: 0, Receive: 0, Length: 7532, Exceptions: 0)
> Write errors:           0
> Total transferred:      355060137 bytes
> HTML transferred:       352889257 bytes
> Requests per second:    186.16 [#/sec] (mean)
> Time per request:       10.743 [ms] (mean)
> Time per request:       5.372 [ms] (mean, across all concurrent requests)
> Transfer rate:          6303.74 [Kbytes/sec] received
>
> Connection Times (ms)
>              min  mean[+/-sd] median   max
> Connect:        0    0   0.0      0       1
> Processing:     6   11   2.8     11      25
> Waiting:        6   10   2.8     10      22
> Total:          7   11   2.8     11      25
>
> Percentage of the requests served within a certain time (ms)
>  50%     11
>  66%     12
>  75%     13
>  80%     14
>  90%     15
>  95%     15
>  98%     16
>  99%     16
>  100%     25 (longest request)
>
> Looking at the results I think it is safe to say that with 16 users we
> hit the limit of my core i7, and with 4 users we hit the sweet spot
> (which is probably correct since I have 2 cores with each 2
> hyperthreads).
>
> I expected 4 users to perform similar to 2 users, but it appears to be
> slower. I'll run it using yourkit to see if there's a blocker
> somewhere.
>
> In my overall experience, 1.5-SNAPSHOT performs comparable to 1.4.
>
> Notes from this test:
>  - we report wrong length in several cases
>  - exceptions occur when a request is broken off
>  - performance seems on par with 1.4
>
> Martijn
>



-- 
Become a Wicket expert, learn from the best: http://wicketinaction.com

Reply via email to