Benchmarks
Even though focus on performance and scalability is behind the over architecture of grizzly-sendfile, not much attention was paid to profiling and fine-grained optimization. Having said that, the benchmarks show that for small files grizzly-sendfile performs comparably to grizzly (GlassFish), and for larger files (1MB+) grizzly-sendfile outperforms grizzly without breaking a sweat. Comparing grizzly-sendfile to any way of sending files via JavaEE servlets doesn't even make sense.
As grizzly-sendfile evolves and missing features are added, more focus will be put into tuning the code to achieve even better performance and scalability.
Just for informational value, here are some results of benchmarking a 1MB download with concurrency 10 and thread-count 50 using faban :
| glassfish v2ur2 + grizzly-sendfile 0.2 | ops/sec: 22.222 % errors: 0.0 avg. time: 0.447 max time: 10.128 90th %: 0.570 |
|---|---|
| glassfish v2ur2 | ops/sec: 8.789 % errors: 0.0 avg. time: 1.129 max time: 6.214 90th %: 1.365 |
| glassfish v3prelude | ops/sec: 18.017 % errors: 0.0 avg. time: 0.551 max time: 5.563 90th %: 0.745 |
A thorough comparison of performance and scalability characteristics of different Algorithms can be found blog post: grizzly-sendfile and Comparison of Blocking and NonBlocking IO






