Hacker News new | past | comments | ask | show | jobs | submit login

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).




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: