A lot of you wanted benchmarks so here's one comparing Shortfin with Nginx. The tests was performed with a 56.1 kB PNG image with keep-alive turned off on my laptop. The best result out of 3 tests is shown below.
tl;dr:
Shortfin: 18 914 req/sec
Nginx: 15 603 req/sec
SHORTFIN
sudo ab -n 100 -c 100 http://127.0.0.1:40/timothy-johansson.png
Server Software: shortfin/0.9.5
Server Hostname: 127.0.0.1
Server Port: 40
Document Path: /timothy-johansson.png
Document Length: 56089 bytes
Concurrency Level: 100
Time taken for tests: 0.005 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 5618000 bytes
HTML transferred: 5608900 bytes
Requests per second: 18914.32 [#/sec] (mean)
Time per request: 5.287 [ms] (mean)
Time per request: 0.053 [ms] (mean, across all concurrent requests)
Transfer rate: 1037701.56 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 1 2 0.0 1 2
Processing: 2 2 0.1 2 2
Waiting: 1 1 0.2 1 2
Total: 4 4 0.1 4 4
ERROR: The median and mean for the initial connection time are more than twice the standard
deviation apart. These results are NOT reliable.
Percentage of the requests served within a certain time (ms)
50% 4
66% 4
75% 4
80% 4
90% 4
95% 4
98% 4
99% 4
100% 4 (longest request)
NGINX
sudo ab -n 100 -c 100 http://127.0.0.1:41/timothy-johansson.png
Server Software: nginx/1.2.6
Server Hostname: 127.0.0.1
Server Port: 41
Document Path: /timothy-johansson.png
Document Length: 56089 bytes
Concurrency Level: 100
Time taken for tests: 0.006 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 5631000 bytes
HTML transferred: 5608900 bytes
Requests per second: 15603.06 [#/sec] (mean)
Time per request: 6.409 [ms] (mean)
Time per request: 0.064 [ms] (mean, across all concurrent requests)
Transfer rate: 858015.83 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 1 2 0.7 2 3
Processing: 1 2 0.5 1 3
Waiting: 0 1 0.7 1 3
Total: 2 4 0.9 4 5
WARNING: The median and mean for the processing time are not within a normal deviation
These results are probably not that reliable.
Percentage of the requests served within a certain time (ms)
50% 4
66% 4
75% 4
80% 4
90% 5
95% 5
98% 5
99% 5
100% 5 (longest request)
I don't know how valid a test of five milliseconds is to one of six milliseconds (much less one requesting a single known resource with no keep-alive). Though practically, even if those results held in a realistic test, is it still a viable alternative to nginx? You eliminate an enormous amount of flexibility (I admit -- I ♥ nginx) and proven trust for a margin-of-error theoretical speed advantage?
I understand the desire to get software out there, but webserver is a ridiculously hard nut to crack. nginx broke in through a new architectural paradigm.
Nope, I'm not trying to replace nginx. I love nginx too ;) The "challenge" was to build a very lightweight server that was faster than nginx - which I did. Then I've used it as a base for a various of projects (see my other comments).
tl;dr:
Shortfin: 18 914 req/sec
Nginx: 15 603 req/sec
SHORTFIN
NGINX