Comments (36)
It's quite fun watching all 16 hyperthreads get pegged to 100% I have to say. ^.^
First 'big' run was done at just 1s warmup and 1s test run time, so it is likely not accurate but is a quick way to make sure it is all working at least, the results:
Total Cores: 16
Processing servers:
- bin/server_rust_iron
- bin/server_rust_nickel
- bin/server_rust_rocket
- bin/server_crystal_kemal
- bin/server_crystal_raze
- bin/server_crystal_router_cr
- bin/server_go_echo
- bin/server_go_fasthttprouter
- bin/server_go_gin
- bin/server_go_gorilla_mux
- bin/server_go_iris
- bin/server_python_flask
- bin/server_python_sanic
- bin/server_elixir_phoenix
- bin/server_elixir_plug
- bin/server_node_clusterexpress
- bin/server_node_express
Processing: bin/server_rust_iron
-
- Launching server: bin/server_rust_iron
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/26450118710993766957024200955
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/52203959857881845450048080981
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 1s...
-
- Test Complete
Shutting down server: bin/server_rust_iron
Processing: bin/server_rust_nickel
-
- Launching server: bin/server_rust_nickel
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/74778458944759186539529287107
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/54696973881595090384887372560
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 1s...
-
- Test Complete
Shutting down server: bin/server_rust_nickel
Processing: bin/server_rust_rocket
-
- Launching server: bin/server_rust_rocket
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/97949065908733122689584009393
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/26743958305840587842268905169
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 1s...
-
- Test Complete
Shutting down server: bin/server_rust_rocket
Processing: bin/server_crystal_kemal
-
- Launching server: bin/server_crystal_kemal
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/29743438573675434744681532462
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/19056941744999552588288086747
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 1s...
-
- Test Complete
Shutting down server: bin/server_crystal_kemal
Processing: bin/server_crystal_raze
-
- Launching server: bin/server_crystal_raze
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/30184765330408810171274973053
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/96302508365455581451705095958
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 1s...
-
- Test Complete
Shutting down server: bin/server_crystal_raze
Processing: bin/server_crystal_router_cr
-
- Launching server: bin/server_crystal_router_cr
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/93352312178209284092014350375
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/84091821568116489722588130204
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 1s...
-
- Test Complete
Shutting down server: bin/server_crystal_router_cr
Processing: bin/server_go_echo
-
- Launching server: bin/server_go_echo
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/3788566778558216355877466848
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/54409751513928336873406361495
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 1s...
-
- Test Complete
Shutting down server: bin/server_go_echo
Processing: bin/server_go_fasthttprouter
-
- Launching server: bin/server_go_fasthttprouter
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/82231991195676397195429489733
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/59471051778010463301767929231
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 1s...
-
- Test Complete
Shutting down server: bin/server_go_fasthttprouter
Processing: bin/server_go_gin
-
- Launching server: bin/server_go_gin
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/73952613769885501160680666196
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/84382352193437242343512219554
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 1s...
-
- Test Complete
Shutting down server: bin/server_go_gin
Processing: bin/server_go_gorilla_mux
-
- Launching server: bin/server_go_gorilla_mux
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/87477833345627742276627299725
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/45743836668827106832766751597
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 1s...
-
- Test Complete
Shutting down server: bin/server_go_gorilla_mux
Processing: bin/server_go_iris
-
- Launching server: bin/server_go_iris
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/85737280622104170131907729865
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/84834162416600765720412354312
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 1s...
-
- Test Complete
Shutting down server: bin/server_go_iris
Processing: bin/server_python_flask
-
- Launching server: bin/server_python_flask
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/94792907760373159778033179283
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/90734747551170605875849811761
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 1s...
-
- Test Complete
Shutting down server: bin/server_python_flask
Processing: bin/server_python_sanic
-
- Launching server: bin/server_python_sanic
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/65354821648575277137885277394
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/47219882845453329028649374101
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 1s...
-
- Test Complete
Shutting down server: bin/server_python_sanic
Processing: bin/server_elixir_phoenix
-
- Launching server: bin/server_elixir_phoenix
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/1393429505641519114662876030
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/74989099520657335853701921860
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 1s...
-
- Test Complete
Shutting down server: bin/server_elixir_phoenix
Processing: bin/server_elixir_plug
-
- Launching server: bin/server_elixir_plug
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/2028900076188986538076604035
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/30198852409522963948200354436
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 1s...
-
- Test Complete
Shutting down server: bin/server_elixir_plug
Processing: bin/server_node_clusterexpress
-
- Launching server: bin/server_node_clusterexpress
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/45547655671309327389192136422
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/30258168433532889024502313449
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 1s...
-
- Test Complete
Shutting down server: bin/server_node_clusterexpress
Processing: bin/server_node_express
-
- Launching server: bin/server_node_express
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/67498271887158652849986996005
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/75041962912088020115693004293
-
- Performing test for 1s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 1s...
-
- Test Complete
Shutting down server: bin/server_node_express
Path | URL | Errors | Total Requests Count | Total Requests Throughput | Req/s Avg | Req/s Stdev | Req/s Max | Req/s +/- | Latency Avg | Latency Stdev | Latency Max | Latency +/- | 50% | 75% | 90% | 99% |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
bin/server_crystal_kemal | http://127.0.0.1:3000/ | 0 | 65104 | 6.71MB | 8.18k | 1.18k | 10.10k | 62.50% | 13.82ms | 3.82ms | 42.02ms | 79.28% | 12.14ms | 12.66ms | 19.24ms | 28.70ms |
bin/server_crystal_kemal | http://127.0.0.1:3000/user | 0 | 49889 | 5.14MB | 6.27k | 533.68 | 7.08k | 70.00% | 19.30ms | 4.86ms | 38.67ms | 91.19% | 22.41ms | 23.00ms | 23.70ms | 33.62ms |
bin/server_crystal_kemal | http://127.0.0.1:3000/user/0 | 0 | 45991 | 6.05MB | 5.78k | 574.51 | 6.32k | 90.00% | 21.52ms | 5.22ms | 48.83ms | 95.72% | 24.77ms | 25.23ms | 25.61ms | 36.72ms |
bin/server_crystal_raze | http://127.0.0.1:3000/ | 0 | 80060 | 4.73MB | 10.06k | 450.00 | 10.74k | 63.75% | 11.49ms | 2.48ms | 19.01ms | 83.38% | 10.49ms | 10.61ms | 16.89ms | 17.64ms |
bin/server_crystal_raze | http://127.0.0.1:3000/user | 0 | 69163 | 4.09MB | 8.68k | 1.21k | 10.06k | 73.75% | 13.45ms | 4.37ms | 212.16ms | 78.31% | 11.48ms | 17.70ms | 18.17ms | 21.10ms |
bin/server_crystal_raze | http://127.0.0.1:3000/user/0 | 0 | 64250 | 5.64MB | 8.06k | 784.72 | 8.97k | 68.75% | 14.39ms | 3.96ms | 219.08ms | 69.81% | 12.51ms | 18.50ms | 18.74ms | 21.53ms |
bin/server_crystal_router_cr | http://127.0.0.1:3000/ | 0 | 77489 | 4.58MB | 9.74k | 1.83k | 19.10k | 75.00% | 11.34ms | 3.79ms | 211.21ms | 77.76% | 9.75ms | 14.92ms | 15.52ms | 22.70ms |
bin/server_crystal_router_cr | http://127.0.0.1:3000/user | 0 | 70123 | 4.15MB | 8.82k | 2.02k | 12.55k | 56.25% | 10.56ms | 3.55ms | 212.93ms | 96.15% | 8.59ms | 13.42ms | 13.72ms | 15.98ms |
bin/server_crystal_router_cr | http://127.0.0.1:3000/user/0 | 0 | 65843 | 5.78MB | 8.27k | 1.00k | 10.06k | 61.25% | 13.19ms | 2.92ms | 22.44ms | 61.79% | 11.09ms | 16.44ms | 16.79ms | 20.56ms |
bin/server_elixir_phoenix | http://127.0.0.1:3000/ | 0 | 132468 | 18.07MB | 16.56k | 3.52k | 25.88k | 71.25% | 7.21ms | 15.87ms | 217.47ms | 97.18% | 4.41ms | 9.93ms | 15.06ms | 73.89ms |
bin/server_elixir_phoenix | http://127.0.0.1:3000/user | 0 | 117695 | 16.05MB | 14.72k | 3.66k | 24.92k | 70.00% | 8.03ms | 16.18ms | 222.90ms | 96.22% | 4.59ms | 11.70ms | 17.55ms | 65.18ms |
bin/server_elixir_phoenix | http://127.0.0.1:3000/user/0 | 0 | 109060 | 17.99MB | 13.67k | 2.09k | 18.69k | 67.50% | 8.41ms | 15.83ms | 226.37ms | 96.87% | 6.52ms | 11.77ms | 16.64ms | 51.92ms |
bin/server_elixir_plug | http://127.0.0.1:3000/ | 0 | 139498 | 19.02MB | 17.46k | 2.75k | 24.65k | 68.75% | 6.09ms | 13.00ms | 205.68ms | 98.30% | 4.75ms | 8.43ms | 11.80ms | 28.43ms |
bin/server_elixir_plug | http://127.0.0.1:3000/user | 0 | 128609 | 17.54MB | 16.09k | 3.71k | 23.93k | 68.75% | 7.62ms | 15.80ms | 215.78ms | 97.33% | 5.15ms | 11.00ms | 15.69ms | 67.00ms |
bin/server_elixir_plug | http://127.0.0.1:3000/user/0 | 0 | 135539 | 22.36MB | 16.95k | 3.97k | 27.29k | 66.25% | 6.39ms | 13.15ms | 213.61ms | 98.15% | 5.12ms | 8.63ms | 12.28ms | 27.72ms |
bin/server_go_echo | http://127.0.0.1:3000/ | 0 | 276253 | 30.56MB | 34.55k | 7.31k | 52.76k | 65.00% | 2.66ms | 5.29ms | 202.97ms | 98.83% | 1.86ms | 3.47ms | 4.92ms | 8.16ms |
bin/server_go_echo | http://127.0.0.1:3000/user | 0 | 273532 | 30.26MB | 34.24k | 8.63k | 53.52k | 71.25% | 3.57ms | 11.94ms | 206.24ms | 98.60% | 1.67ms | 3.51ms | 5.53ms | 20.50ms |
bin/server_go_echo | http://127.0.0.1:3000/user/0 | 0 | 269404 | 37.51MB | 33.70k | 6.40k | 55.39k | 72.50% | 3.12ms | 8.32ms | 207.78ms | 99.04% | 1.96ms | 3.72ms | 5.29ms | 11.19ms |
bin/server_go_fasthttprouter | http://127.0.0.1:3000/ | 0 | 610519 | 54.15MB | 76.48k | 22.98k | 120.83k | 65.00% | 1.27ms | 2.88ms | 199.23ms | 97.36% | 0.90ms | 1.25ms | 2.26ms | 5.61ms |
bin/server_go_fasthttprouter | http://127.0.0.1:3000/user | 0 | 620908 | 55.07MB | 78.01k | 32.65k | 131.95k | 60.00% | 1.41ms | 7.77ms | 200.06ms | 99.28% | 775.00us | 0.96ms | 1.39ms | 7.11ms |
bin/server_go_fasthttprouter | http://127.0.0.1:3000/user/0 | 0 | 535732 | 83.79MB | 66.91k | 17.61k | 102.53k | 67.50% | 1.69ms | 5.08ms | 205.96ms | 98.43% | 1.05ms | 1.60ms | 3.09ms | 7.83ms |
bin/server_go_gin | http://127.0.0.1:3000/ | 0 | 232969 | 25.77MB | 29.12k | 6.68k | 46.24k | 65.00% | 3.28ms | 5.11ms | 206.07ms | 95.29% | 2.25ms | 4.26ms | 6.43ms | 15.13ms |
bin/server_go_gin | http://127.0.0.1:3000/user | 0 | 233999 | 25.89MB | 29.27k | 8.78k | 47.15k | 73.75% | 3.97ms | 11.46ms | 212.65ms | 98.04% | 2.10ms | 4.15ms | 6.67ms | 23.13ms |
bin/server_go_gin | http://127.0.0.1:3000/user/0 | 0 | 227011 | 31.61MB | 28.39k | 5.16k | 44.18k | 65.00% | 3.19ms | 4.01ms | 201.29ms | 92.37% | 2.22ms | 4.24ms | 6.46ms | 15.18ms |
bin/server_go_gorilla_mux | http://127.0.0.1:3000/ | 0 | 269325 | 29.79MB | 33.72k | 4.56k | 49.62k | 68.75% | 2.80ms | 6.45ms | 205.24ms | 99.09% | 2.01ms | 3.43ms | 4.83ms | 8.99ms |
bin/server_go_gorilla_mux | http://127.0.0.1:3000/user | 0 | 259825 | 28.74MB | 32.55k | 6.58k | 62.53k | 76.25% | 3.19ms | 7.08ms | 202.57ms | 96.86% | 1.91ms | 3.79ms | 5.99ms | 16.75ms |
bin/server_go_gorilla_mux | http://127.0.0.1:3000/user/0 | 0 | 237488 | 33.07MB | 29.68k | 4.92k | 42.66k | 65.00% | 3.61ms | 9.33ms | 216.84ms | 98.56% | 2.23ms | 4.12ms | 6.14ms | 15.91ms |
bin/server_go_iris | http://127.0.0.1:3000/ | 0 | 328609 | 36.35MB | 41.14k | 9.14k | 63.35k | 66.25% | 2.71ms | 9.19ms | 205.97ms | 99.02% | 1.47ms | 2.59ms | 4.51ms | 11.70ms |
bin/server_go_iris | http://127.0.0.1:3000/user | 0 | 313483 | 34.68MB | 39.30k | 8.15k | 59.51k | 71.25% | 2.87ms | 8.35ms | 200.31ms | 98.73% | 1.65ms | 3.18ms | 4.98ms | 12.45ms |
bin/server_go_iris | http://127.0.0.1:3000/user/0 | 0 | 313635 | 43.67MB | 39.17k | 6.04k | 57.48k | 68.75% | 2.77ms | 8.51ms | 201.91ms | 99.09% | 1.65ms | 2.83ms | 4.68ms | 10.62ms |
bin/server_node_clusterexpress | http://127.0.0.1:3000/ | 0 | 103164 | 15.94MB | 12.89k | 4.68k | 24.93k | 66.25% | 5.87ms | 6.31ms | 216.98ms | 95.23% | 4.32ms | 7.38ms | 7.93ms | 22.77ms |
bin/server_node_clusterexpress | http://127.0.0.1:3000/user | 0 | 104645 | 16.17MB | 13.10k | 6.84k | 30.59k | 61.25% | 5.78ms | 8.31ms | 224.75ms | 96.59% | 4.09ms | 7.27ms | 7.87ms | 20.81ms |
bin/server_node_clusterexpress | http://127.0.0.1:3000/user/0 | 0 | 97393 | 17.83MB | 12.15k | 3.75k | 21.26k | 68.75% | 7.94ms | 11.30ms | 236.39ms | 96.54% | 6.49ms | 7.81ms | 11.71ms | 40.82ms |
bin/server_node_express | http://127.0.0.1:3000/ | 0 | 11702 | 1.81MB | 1.47k | 303.69 | 2.10k | 68.75% | 47.77ms | 6.85ms | 304.39ms | 96.28% | 47.03ms | 50.00ms | 51.41ms | 55.01ms |
bin/server_node_express | http://127.0.0.1:3000/user | 0 | 11385 | 1.76MB | 1.43k | 303.55 | 2.26k | 71.25% | 62.53ms | 12.81ms | 329.94ms | 95.99% | 64.71ms | 65.03ms | 65.59ms | 67.29ms |
bin/server_node_express | http://127.0.0.1:3000/user/0 | 0 | 10600 | 1.94MB | 1.33k | 369.52 | 2.12k | 68.75% | 54.90ms | 16.82ms | 334.96ms | 96.93% | 54.95ms | 55.23ms | 63.02ms | 70.22ms |
bin/server_python_flask | http://127.0.0.1:3000/ | 0 | 2573 | 386.96KB | 368.79 | 212.21 | 730.00 | 61.43% | 42.92ms | 10.71ms | 249.61ms | 96.93% | 42.55ms | 44.44ms | 45.38ms | 52.03ms |
bin/server_python_flask | http://127.0.0.1:3000/user | 0 | 2572 | 386.80KB | 444.98 | 365.57 | 1.09k | 46.55% | 46.36ms | 17.70ms | 844.46ms | 98.21% | 46.27ms | 46.52ms | 46.92ms | 55.44ms |
bin/server_python_flask | http://127.0.0.1:3000/user/0 | 0 | 2325 | 417.77KB | 519.40 | 357.38 | 1.05k | 60.00% | 45.96ms | 7.87ms | 249.99ms | 96.13% | 46.72ms | 46.90ms | 47.05ms | 47.97ms |
bin/server_python_sanic | http://127.0.0.1:3000/ | 0 | 219112 | 24.87MB | 27.35k | 8.36k | 48.48k | 66.25% | 4.68ms | 3.42ms | 31.65ms | 81.76% | 3.76ms | 6.41ms | 7.84ms | 16.94ms |
bin/server_python_sanic | http://127.0.0.1:3000/user | 0 | 203034 | 23.04MB | 25.30k | 6.40k | 50.82k | 76.25% | 4.85ms | 3.21ms | 28.10ms | 76.85% | 4.11ms | 7.03ms | 7.83ms | 16.00ms |
bin/server_python_sanic | http://127.0.0.1:3000/user/0 | 0 | 209172 | 29.72MB | 26.05k | 7.22k | 46.38k | 75.00% | 4.76ms | 3.39ms | 31.57ms | 75.80% | 4.00ms | 7.02ms | 7.82ms | 16.56ms |
bin/server_rust_iron | http://127.0.0.1:3000/ | 0 | 377451 | 27.00MB | 63.28k | 47.93k | 140.57k | 43.33% | 269.36us | 271.65us | 13.58ms | 95.91% | 225.00us | 337.00us | 423.00us | 818.00us |
bin/server_rust_iron | http://127.0.0.1:3000/user | 0 | 357691 | 25.58MB | 59.95k | 37.68k | 116.23k | 48.33% | 337.42us | 254.98us | 19.64ms | 91.24% | 333.00us | 414.00us | 494.00us | 0.89ms |
bin/server_rust_iron | http://127.0.0.1:3000/user/0 | 0 | 323302 | 40.39MB | 46.41k | 31.45k | 103.48k | 54.29% | 392.30us | 810.67us | 58.81ms | 99.39% | 360.00us | 487.00us | 607.00us | 1.03ms |
bin/server_rust_nickel | http://127.0.0.1:3000/ | 0 | 307276 | 38.10MB | 154.64k | 8.27k | 161.22k | 85.00% | 46.75us | 24.95us | 1.61ms | 75.98% | 36.00us | 50.00us | 88.00us | 95.00us |
bin/server_rust_nickel | http://127.0.0.1:3000/user | 0 | 382918 | 47.47MB | 175.16k | 20.53k | 208.29k | 72.73% | 43.38us | 29.95us | 9.56ms | 89.64% | 31.00us | 64.00us | 74.00us | 86.00us |
bin/server_rust_nickel | http://127.0.0.1:3000/user/0 | 0 | 327277 | 51.50MB | 164.46k | 12.65k | 185.00k | 60.00% | 49.29us | 18.09us | 4.00ms | 82.48% | 47.00us | 56.00us | 68.00us | 84.00us |
bin/server_rust_rocket | http://127.0.0.1:3000/ | 0 | 341102 | 29.60MB | 171.48k | 19.97k | 195.75k | 60.00% | 62.07us | 40.21us | 1.21ms | 77.88% | 53.00us | 71.00us | 130.00us | 142.00us |
bin/server_rust_rocket | http://127.0.0.1:3000/user | 0 | 332676 | 28.87MB | 111.62k | 60.03k | 171.57k | 66.67% | 73.98us | 50.96us | 10.61ms | 93.73% | 61.00us | 100.00us | 118.00us | 147.00us |
bin/server_rust_rocket | http://127.0.0.1:3000/user/0 | 0 | 320420 | 49.50MB | 107.43k | 55.10k | 166.95k | 63.33% | 76.82us | 49.28us | 10.62ms | 92.71% | 63.00us | 106.00us | 122.00us | 145.00us |
from web-frameworks.
Aaaand the scala webserver is borked, it tries to start up multiple copies of itself all on the same port consequently crashing... leaving that out then... >.>
from web-frameworks.
That looks so much better on github than in the terminal... ^.^;
Good to see no error happened on any of them!
Some are clearly faster than others, but most are quite close together. It is sorted by name at this point so ignore the sorting (what should I sort by?).
It is also quite interesting at some of the speed differences between the 3 different routes for a single given server.
In general it looks like from a quick look on that, that python's flask is the overall slowest (by far!), with node's express not far behind. Go seemed to have the most impressive showing (I really really dislike the 'language' itself though, blegh...). Rust was not far behind Go. Elixir was a good middle ground. Crystal was pretty far behind though, I guess it's multi-threading is not up to par quite yet unlike many of the other frameworks (I am running the latest/nightly versions of crystal/rust/go/python3, though my elixir is one version out of date now since a new version just came out).
Now I think I may let it run with a higher connections count with 5s warmup and 30s runtime per test.
from web-frameworks.
First I decided to test 'just' rust with 10k concurrent connections, whoops, I need to increase one of my OS limits, glad I did this test first... >.>
On the plus side for as many threads as it was able to create, (EDIT: misread, amended this sentance ^.^) Rust did quite well, it did not really scale any better with the connection count though.
The results:
Total Cores: 16
Concurrent Connections: 10000
Processing servers:
- bin/server_rust_iron
- bin/server_rust_nickel
- bin/server_rust_rocket
Processing: bin/server_rust_iron
- Launching server: bin/server_rust_iron
-
- Warming up for 5s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/98700298838429703802256171858
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/85167260135869599983225488542
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 30s...
-
- Test Complete
- Shutting down server: bin/server_rust_iron
Processing: bin/server_rust_nickel
-
Launching server: bin/server_rust_nickel
-
- Warming up for 5s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/52812330939115869124678431264
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
-
- Performing test for 30s...
-
- Test Complete
-
URL: http://127.0.0.1:3000/user/78956953426456587050998785165
-
- Performing test for 30s...
-
- Test Complete
-
- Performing test for 30s...
../post.lua: cannot open ../post.lua: Too many open files
unable to create thread 7: Too many open files
- Performing test for 30s...
-
-
- Test returned an unsuccessful error code, output of test:
-
-
- Test Complete
-
Shutting down server: bin/server_rust_nickel
Processing: bin/server_rust_rocket
- Launching server: bin/server_rust_rocket
-
- Warming up for 5s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/59184218110503514755998552113
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
../post.lua: cannot open ../post.lua: Too many open files
unable to create thread 7: Too many open files
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/77572417918735240821734743966
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 30s...
../post.lua: cannot open ../post.lua: Too many open files
- Performing test for 30s...
-
- Test Complete
- Shutting down server: bin/server_rust_rocket
Path | URL | Errors | Total Requests Count | Total Requests Throughput | Req/s Avg | Req/s Stdev | Req/s Max | Req/s +/- | Latency Avg | Latency Stdev | Latency Max | Latency +/- | 50% | 75% | 90% | 99% |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
bin/server_rust_iron | http://127.0.0.1:3000/ | 0 | 10947034 | 782.99MB | 91.68k | 49.63k | 140.01k | 75.00% | 229.33us | 174.20us | 19.35ms | 90.29% | 225.00us | 273.00us | 368.00us | 621.00us |
bin/server_rust_iron | http://127.0.0.1:3000/user | 0 | 10518663 | 752.35MB | 88.12k | 47.81k | 143.83k | 72.25% | 251.87us | 211.54us | 21.36ms | 92.88% | 234.00us | 286.00us | 419.00us | 724.00us |
bin/server_rust_iron | http://127.0.0.1:3000/user/0 | 0 | 9505634 | 1.16GB | 106.14k | 23.18k | 132.44k | 66.44% | 282.64us | 241.00us | 25.26ms | 95.02% | 250.00us | 320.00us | 477.00us | 846.00us |
bin/server_rust_nickel | http://127.0.0.1:3000/ | 0 | 4765504 | 590.82MB | 159.67k | 7.48k | 176.46k | 67.00% | 78.56us | 30.30us | 4.63ms | 60.60% | 61.00us | 114.00us | 122.00us | 131.00us |
bin/server_rust_nickel | http://127.0.0.1:3000/user/0 | 0 | 5064768 | 796.97MB | 169.62k | 11.48k | 221.65k | 89.00% | 74.91us | 29.87us | 7.85ms | 61.07% | 57.00us | 109.00us | 116.00us | 123.00us |
bin/server_rust_rocket | http://127.0.0.1:3000/ | 0 | 8530304 | 740.30MB | 142.95k | 17.75k | 195.35k | 70.50% | 73.29us | 51.06us | 12.10ms | 81.93% | 66.00us | 86.00us | 161.00us | 174.00us |
bin/server_rust_rocket | http://127.0.0.1:3000/user | 0 | 7442954 | 645.93MB | 124.69k | 42.14k | 199.62k | 67.00% | 81.46us | 53.90us | 12.01ms | 71.86% | 76.00us | 91.00us | 171.00us | 184.00us |
bin/server_rust_rocket | http://127.0.0.1:3000/user/0 | 0 | 4762954 | 735.85MB | 159.53k | 2.34k | 164.68k | 66.67% | 116.52us | 45.51us | 14.60ms | 75.55% | 98.00us | 114.00us | 192.00us | 202.00us |
from web-frameworks.
With my system limit enhanced, I decided to try elixir with 50K connections (I set the file descriptor limit to 65536) and warmup of 3s and runtime of 10s, and the results:
Total Cores: 16
Concurrent Connections: 50000
Processing servers:
- bin/server_elixir_phoenix
- bin/server_elixir_plug
Processing: bin/server_elixir_phoenix
- Launching server: bin/server_elixir_phoenix
-
- Warming up for 5s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/78859239144763392299227572306
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 10s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/18603197934598969687347993941
-
- Performing test for 10s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 10s...
-
- Test Complete
- Shutting down server: bin/server_elixir_phoenix
Processing: bin/server_elixir_plug
- Launching server: bin/server_elixir_plug
-
- Warming up for 5s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/48746203591989270871020485155
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 10s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/29871532825000663200765424721
-
- Performing test for 10s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 10s...
-
- Test Complete
- Shutting down server: bin/server_elixir_plug
Path | URL | Errors | Total Requests Count | Total Requests Throughput | Req/s Avg | Req/s Stdev | Req/s Max | Req/s +/- | Latency Avg | Latency Stdev | Latency Max | Latency +/- | 50% | 75% | 90% | 99% |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
bin/server_elixir_phoenix | http://127.0.0.1:3000/ | 0 | 6081 | 849.20KB | 7.43k | 5.58k | 20.56k | 87.50% | 21.66ms | 11.24ms | 59.65ms | 66.06% | 19.39ms | 27.52ms | 37.47ms | 55.00ms |
bin/server_elixir_phoenix | http://127.0.0.1:3000/user | 0 | 3736 | 521.73KB | 4.62k | 3.85k | 13.86k | 87.50% | 22.12ms | 10.99ms | 65.17ms | 68.31% | 19.83ms | 27.85ms | 37.33ms | 54.95ms |
bin/server_elixir_phoenix | http://127.0.0.1:3000/user/0 | 0 | 8485 | 1.40MB | 10.38k | 8.12k | 25.88k | 75.00% | 18.82ms | 11.21ms | 63.60ms | 72.47% | 16.80ms | 22.51ms | 32.13ms | 60.33ms |
bin/server_elixir_plug | http://127.0.0.1:3000/ | 0 | 6990 | 0.95MB | 8.69k | 8.42k | 27.85k | 87.50% | 19.81ms | 12.04ms | 60.48ms | 65.64% | 16.72ms | 27.13ms | 38.28ms | 53.77ms |
bin/server_elixir_plug | http://127.0.0.1:3000/user | 0 | 5982 | 835.38KB | 7.28k | 8.06k | 25.71k | 87.50% | 20.12ms | 11.42ms | 62.21ms | 66.67% | 18.91ms | 26.26ms | 35.47ms | 53.07ms |
bin/server_elixir_plug | http://127.0.0.1:3000/user/0 | 0 | 5525 | 0.91MB | 6.72k | 2.67k | 11.52k | 75.00% | 16.26ms | 8.07ms | 59.00ms | 74.14% | 14.98ms | 20.40ms | 25.67ms | 48.97ms |
from web-frameworks.
50k is definitely a bit more than my system can handle it seems, I think 1k is a good default value then, after all even rust didn't scale to higher concurrent connections later but it did seem to sustain it well. Now it is time for the 5s warmup, 30s runtime tests with 1k connections. I went ahead and pasted in the shell command I used to launch it as well so all settings can be seen, it defaults to 1000 concurrent connections and it is limited to half the total core count of sending the surge of requests, 'most' servers absolutely cap out every CPU at 100%, though some are obviously single threaded, like python and node. Memory usage did not seem to flucuate much among any of the servers though, baseline of system was about 390megs in use, rust seemed to spike to between 420-600megs (the higher memory usage one was the faster one as expected, I should have it report cpu/memory usage of the system at baseline and during tests... maybe later), crystal seemed to average ~500megs, though it seemed to only be using 1 CPU total (~102% CPU usage instead of the expected ~1200%), shouldn't crystal be heavily multi-threaded, this would definitely explain its poor ranking, though perhaps it's trying to minimize context switching cost by passing information between threads (going multi-threaded will definitely add in a hit on speed, just a question of if the multi-threading itself will make up for it or not, for note, the siegeing engine is using ~10% of each core), and wow when the go servers start running all cores are pegged to 100% again, with surprisingly little memory usage, only around ~438M system usage (why does the language syntax suck so much, blegh...), all the 4(5?) other go servers used almost identical memory too, fasthttprouter was just a 'tiny' bit less memory than the others (~432M) and iris using just a tiny bit more (~450), and pythons flask ate about ~418m and only 1 core, however python's sanic hit near 100% CPU usage(!) and ate ~520M,, it is multi-process as I saw many processes startup, then elixir phoenix started, ate about 80% of each CPU (it's VM tries to be CPU friendly as much as possible) and ate 550M, elixir plug is identical, which makes sense since phoenix just a full web framework on top of plug, and nodes clusterexpress is obviously mulit-core, it hits 100% of all CPU's, however it eats an amazing 1.24G of RAM (!?), express by itself barely hits 100% of one CPU, but only eats ~477M (which is still high compared to most servers here), and the output:
╰─➤ ../stats.exs -c 1000 -w 5 -d 30 rust crystal go flask sanic elixir node
Total Cores: 16
Concurrent Connections: 1000
Processing servers:
- bin/server_rust_iron
- bin/server_rust_nickel
- bin/server_rust_rocket
- bin/server_crystal_kemal
- bin/server_crystal_raze
- bin/server_crystal_router_cr
- bin/server_go_echo
- bin/server_go_fasthttprouter
- bin/server_go_gin
- bin/server_go_gorilla_mux
- bin/server_go_iris
- bin/server_python_flask
- bin/server_python_sanic
- bin/server_elixir_phoenix
- bin/server_elixir_plug
- bin/server_node_clusterexpress
- bin/server_node_express
Processing: bin/server_rust_iron
- Launching server: bin/server_rust_iron
-
- Warming up for 5s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/80310875046755178217836306950
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/52328741465164477178078433374
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 30s...
-
- Test Complete
- Shutting down server: bin/server_rust_iron
Processing: bin/server_rust_nickel
- Launching server: bin/server_rust_nickel
-
- Warming up for 5s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/23135401432731901026974054297
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/73203904315018441280360650672
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 30s...
-
- Test Complete
- Shutting down server: bin/server_rust_nickel
Processing: bin/server_rust_rocket
- Launching server: bin/server_rust_rocket
-
- Warming up for 5s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/43581030434907989730338000309
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/85725910617373397745696086163
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 30s...
-
- Test Complete
- Shutting down server: bin/server_rust_rocket
Processing: bin/server_crystal_kemal
- Launching server: bin/server_crystal_kemal
-
- Warming up for 5s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/72417623314037919859174327274
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/24670413940687467172971259775
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 30s...
-
- Test Complete
- Shutting down server: bin/server_crystal_kemal
Processing: bin/server_crystal_raze
- Launching server: bin/server_crystal_raze
-
- Warming up for 5s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/86989114112146860722621803896
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/31559412054872301359254445186
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 30s...
-
- Test Complete
- Shutting down server: bin/server_crystal_raze
Processing: bin/server_crystal_router_cr
- Launching server: bin/server_crystal_router_cr
-
- Warming up for 5s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/61325979598113381349064452394
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/88373378253149565668746247018
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 30s...
-
- Test Complete
- Shutting down server: bin/server_crystal_router_cr
Processing: bin/server_go_echo
- Launching server: bin/server_go_echo
-
- Warming up for 5s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/65665667639758795677388889207
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/11117792787524171124711842293
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 30s...
-
- Test Complete
- Shutting down server: bin/server_go_echo
Processing: bin/server_go_fasthttprouter
- Launching server: bin/server_go_fasthttprouter
-
- Warming up for 5s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/5094758044760646999313060026
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/83714651432790889256685453938
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 30s...
-
- Test Complete
- Shutting down server: bin/server_go_fasthttprouter
Processing: bin/server_go_gin
- Launching server: bin/server_go_gin
-
- Warming up for 5s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/29325495156784872676357272482
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/81305628909170656013696154156
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 30s...
-
- Test Complete
- Shutting down server: bin/server_go_gin
Processing: bin/server_go_gorilla_mux
- Launching server: bin/server_go_gorilla_mux
-
- Warming up for 5s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/59573285147826025337208916933
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/82142077731965901694904613708
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 30s...
-
- Test Complete
- Shutting down server: bin/server_go_gorilla_mux
Processing: bin/server_go_iris
- Launching server: bin/server_go_iris
-
- Warming up for 5s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/47522884156756950638085683497
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/12327963608096765486640397351
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 30s...
-
- Test Complete
- Shutting down server: bin/server_go_iris
Processing: bin/server_python_flask
- Launching server: bin/server_python_flask
-
- Warming up for 5s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/48648282362743669546459872665
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/37242558110150762339099306876
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 30s...
-
- Test Complete
- Shutting down server: bin/server_python_flask
Processing: bin/server_python_sanic
- Launching server: bin/server_python_sanic
-
- Warming up for 5s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/62426265767722551878239831725
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/67376208805439954190347051178
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 30s...
-
- Test Complete
- Shutting down server: bin/server_python_sanic
Processing: bin/server_elixir_phoenix
- Launching server: bin/server_elixir_phoenix
-
- Warming up for 5s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/19573053844363156278888046150
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/77373582634948303043906905896
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 30s...
-
- Test Complete
- Shutting down server: bin/server_elixir_phoenix
Processing: bin/server_elixir_plug
- Launching server: bin/server_elixir_plug
-
- Warming up for 5s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/43529385107880424446196911768
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/89123228724446833323505187472
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 30s...
-
- Test Complete
- Shutting down server: bin/server_elixir_plug
Processing: bin/server_node_clusterexpress
- Launching server: bin/server_node_clusterexpress
-
- Warming up for 5s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/88699828112656712698407342555
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/87711301316659405169695176803
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 30s...
-
- Test Complete
- Shutting down server: bin/server_node_clusterexpress
Processing: bin/server_node_express
- Launching server: bin/server_node_express
-
- Warming up for 5s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/83956776074189458077863548676
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/22600418458423928970803820565
-
- Performing test for 30s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 30s...
-
- Test Complete
- Shutting down server: bin/server_node_express
Path | URL | Errors | Total Requests Count | Total Requests/s | Total Requests Throughput | Total Throughput/s | Req/s Avg | Req/s Stdev | Req/s Max | Req/s +/- | Latency Avg | Latency Stdev | Latency Max | Latency +/- | 50% | 75% | 90% | 99% |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
bin/server_crystal_kemal | http://127.0.0.1:3000/ | 0 | 2018784 | 207.93MB | 67159.57 | 6.92MB | 8.45k | 562.28 | 9.99k | 69.96% | 14.86ms | 3.51ms | 31.48ms | 77.44% | 13.03ms | 13.88ms | 20.72ms | 25.66ms |
bin/server_crystal_kemal | http://127.0.0.1:3000/user | 0 | 1603828 | 165.19MB | 53390.93 | 5.50MB | 6.71k | 431.86 | 7.59k | 66.08% | 18.68ms | 4.71ms | 231.04ms | 63.76% | 15.25ms | 23.75ms | 24.21ms | 29.72ms |
bin/server_crystal_kemal | http://127.0.0.1:3000/user/0 | 0 | 1413974 | 186.09MB | 47033.96 | 6.19MB | 5.92k | 331.30 | 7.20k | 60.75% | 21.21ms | 4.60ms | 39.13ms | 68.33% | 17.64ms | 25.62ms | 26.06ms | 31.61ms |
bin/server_crystal_raze | http://127.0.0.1:3000/ | 0 | 2079720 | 122.97MB | 69166.99 | 4.09MB | 8.70k | 358.70 | 10.01k | 80.12% | 14.37ms | 3.28ms | 228.49ms | 58.93% | 16.70ms | 17.20ms | 17.47ms | 18.02ms |
bin/server_crystal_raze | http://127.0.0.1:3000/user | 0 | 1774370 | 104.91MB | 59004.83 | 3.49MB | 7.42k | 484.76 | 8.84k | 73.17% | 16.87ms | 3.12ms | 217.93ms | 73.40% | 18.02ms | 18.36ms | 18.73ms | 24.09ms |
bin/server_crystal_raze | http://127.0.0.1:3000/user/0 | 0 | 1648147 | 144.61MB | 54836.04 | 4.81MB | 6.90k | 450.90 | 8.43k | 68.79% | 18.13ms | 3.83ms | 233.54ms | 79.04% | 19.22ms | 19.45ms | 19.68ms | 22.40ms |
bin/server_crystal_router_cr | http://127.0.0.1:3000/ | 0 | 2402211 | 142.04MB | 79923.18 | 4.73MB | 10.05k | 439.44 | 11.36k | 73.04% | 12.47ms | 2.97ms | 219.21ms | 66.85% | 10.53ms | 16.41ms | 16.72ms | 17.09ms |
bin/server_crystal_router_cr | http://127.0.0.1:3000/user | 0 | 2019711 | 119.42MB | 67223.57 | 3.97MB | 8.45k | 499.56 | 10.01k | 76.88% | 14.81ms | 3.52ms | 221.83ms | 72.25% | 12.76ms | 18.10ms | 18.45ms | 21.74ms |
bin/server_crystal_router_cr | http://127.0.0.1:3000/user/0 | 0 | 2111187 | 185.23MB | 70214.92 | 6.16MB | 8.84k | 578.54 | 10.12k | 69.83% | 14.21ms | 3.41ms | 31.58ms | 70.74% | 11.94ms | 17.75ms | 18.28ms | 23.70ms |
bin/server_elixir_phoenix | http://127.0.0.1:3000/ | 0 | 3903425 | 532.33MB | 129848.18 | 17.71MB | 16.35k | 2.67k | 25.76k | 67.52% | 8.54ms | 8.56ms | 236.30ms | 87.20% | 8.65ms | 13.41ms | 18.41ms | 28.89ms |
bin/server_elixir_phoenix | http://127.0.0.1:3000/user | 0 | 3441921 | 469.39MB | 114473.32 | 15.61MB | 14.41k | 2.70k | 25.33k | 68.44% | 9.78ms | 9.67ms | 271.64ms | 56.82% | 9.96ms | 15.61ms | 21.38ms | 33.62ms |
bin/server_elixir_phoenix | http://127.0.0.1:3000/user/0 | 0 | 3399469 | 560.86MB | 113011.72 | 18.65MB | 14.23k | 2.05k | 33.66k | 70.53% | 9.48ms | 8.78ms | 221.57ms | 57.13% | 9.87ms | 14.66ms | 19.66ms | 30.02ms |
bin/server_elixir_plug | http://127.0.0.1:3000/ | 0 | 4204063 | 573.33MB | 139973.24 | 19.09MB | 17.62k | 2.28k | 26.51k | 68.81% | 7.69ms | 7.53ms | 230.39ms | 59.24% | 7.92ms | 11.75ms | 15.85ms | 24.80ms |
bin/server_elixir_plug | http://127.0.0.1:3000/user | 0 | 3844247 | 524.26MB | 127905.48 | 17.44MB | 16.09k | 3.13k | 33.43k | 70.28% | 8.96ms | 11.49ms | 435.65ms | 91.96% | 8.79ms | 13.97ms | 19.41ms | 30.83ms |
bin/server_elixir_plug | http://127.0.0.1:3000/user/0 | 0 | 3953662 | 652.30MB | 131530.33 | 21.70MB | 16.56k | 2.09k | 30.18k | 68.27% | 8.11ms | 7.61ms | 222.75ms | 59.44% | 8.37ms | 12.29ms | 16.51ms | 25.51ms |
bin/server_go_echo | http://127.0.0.1:3000/ | 0 | 8143056 | 0.88GB | 270536.69 | 29.93MB | 34.09k | 4.97k | 86.67k | 72.81% | 3.60ms | 4.58ms | 220.04ms | 96.15% | 2.85ms | 4.68ms | 6.54ms | 11.15ms |
bin/server_go_echo | http://127.0.0.1:3000/user | 0 | 8083816 | 0.87GB | 268705.33 | 29.73MB | 33.80k | 4.72k | 54.25k | 69.76% | 3.96ms | 4.73ms | 211.71ms | 93.15% | 2.86ms | 4.89ms | 7.45ms | 19.77ms |
bin/server_go_echo | http://127.0.0.1:3000/user/0 | 0 | 7878681 | 1.07GB | 261750.2 | 36.45MB | 32.96k | 4.68k | 63.40k | 72.16% | 3.83ms | 7.59ms | 418.43ms | 98.87% | 2.95ms | 4.82ms | 6.75ms | 11.81ms |
bin/server_go_fasthttprouter | http://127.0.0.1:3000/ | 0 | 16616387 | 1.44GB | 552545.67 | 49.01MB | 69.55k | 17.93k | 133.31k | 63.88% | 1.80ms | 3.09ms | 203.59ms | 96.16% | 1.27ms | 2.03ms | 3.41ms | 7.14ms |
bin/server_go_fasthttprouter | http://127.0.0.1:3000/user | 0 | 15773986 | 1.37GB | 524262.17 | 46.50MB | 66.01k | 18.00k | 142.84k | 66.85% | 1.88ms | 2.81ms | 203.84ms | 95.02% | 1.34ms | 2.18ms | 3.58ms | 7.30ms |
bin/server_go_fasthttprouter | http://127.0.0.1:3000/user/0 | 0 | 14871569 | 2.27GB | 494503.02 | 77.34MB | 62.26k | 15.53k | 106.90k | 65.20% | 1.96ms | 1.98ms | 203.03ms | 90.81% | 1.40ms | 2.39ms | 3.80ms | 7.44ms |
bin/server_go_gin | http://127.0.0.1:3000/ | 0 | 6905333 | 763.91MB | 229436.3 | 25.38MB | 28.90k | 4.02k | 82.67k | 73.60% | 4.51ms | 4.83ms | 209.18ms | 93.31% | 3.57ms | 5.71ms | 8.10ms | 20.11ms |
bin/server_go_gin | http://127.0.0.1:3000/user | 0 | 6899553 | 763.27MB | 229241.65 | 25.36MB | 28.87k | 4.46k | 62.87k | 70.94% | 5.10ms | 5.89ms | 227.78ms | 90.95% | 3.52ms | 6.04ms | 10.33ms | 28.18ms |
bin/server_go_gin | http://127.0.0.1:3000/user/0 | 0 | 6740060 | 0.92GB | 223956.08 | 31.18MB | 28.20k | 4.01k | 79.30k | 74.32% | 4.61ms | 4.29ms | 206.48ms | 88.73% | 3.66ms | 5.86ms | 8.35ms | 20.68ms |
bin/server_go_gorilla_mux | http://127.0.0.1:3000/ | 0 | 7894014 | 0.85GB | 262794.54 | 29.07MB | 33.07k | 4.11k | 52.68k | 68.96% | 3.71ms | 2.80ms | 205.95ms | 82.18% | 2.98ms | 4.84ms | 6.85ms | 13.17ms |
bin/server_go_gorilla_mux | http://127.0.0.1:3000/user | 0 | 7761618 | 858.64MB | 257894.84 | 28.53MB | 32.46k | 4.76k | 67.66k | 71.92% | 4.20ms | 4.18ms | 210.52ms | 90.94% | 3.04ms | 5.17ms | 7.99ms | 22.16ms |
bin/server_go_gorilla_mux | http://127.0.0.1:3000/user/0 | 0 | 6974864 | 0.95GB | 231744.78 | 32.27MB | 29.21k | 4.15k | 106.12k | 75.06% | 4.35ms | 4.63ms | 221.90ms | 93.58% | 3.47ms | 5.60ms | 7.82ms | 16.50ms |
bin/server_go_iris | http://127.0.0.1:3000/ | 0 | 9526387 | 1.03GB | 316501.62 | 35.01MB | 39.87k | 7.19k | 90.95k | 70.80% | 3.03ms | 2.32ms | 200.76ms | 81.96% | 2.38ms | 3.95ms | 5.91ms | 10.68ms |
bin/server_go_iris | http://127.0.0.1:3000/user | 0 | 9348087 | 1.01GB | 310593.53 | 34.36MB | 39.11k | 7.05k | 81.36k | 70.07% | 3.31ms | 3.74ms | 216.04ms | 92.12% | 2.38ms | 4.18ms | 6.43ms | 14.32ms |
bin/server_go_iris | http://127.0.0.1:3000/user/0 | 0 | 9063856 | 1.23GB | 301615.13 | 42.00MB | 37.96k | 6.91k | 70.77k | 70.60% | 3.21ms | 2.91ms | 202.41ms | 88.19% | 2.51ms | 4.14ms | 6.22ms | 11.41ms |
bin/server_node_clusterexpress | http://127.0.0.1:3000/ | 0 | 3227217 | 498.59MB | 107217.04 | 16.56MB | 13.51k | 1.49k | 33.96k | 77.45% | 9.12ms | 4.83ms | 224.02ms | 77.01% | 7.74ms | 11.37ms | 15.41ms | 23.35ms |
bin/server_node_clusterexpress | http://127.0.0.1:3000/user | 0 | 3202508 | 494.77MB | 106414.09 | 16.44MB | 13.40k | 1.38k | 56.02k | 84.91% | 9.14ms | 4.27ms | 152.68ms | 73.72% | 7.74ms | 11.51ms | 15.44ms | 20.43ms |
bin/server_node_clusterexpress | http://127.0.0.1:3000/user/0 | 0 | 3063205 | 560.89MB | 101878.67 | 18.65MB | 12.82k | 1.63k | 18.45k | 63.34% | 9.72ms | 5.06ms | 219.98ms | 78.66% | 7.90ms | 11.60ms | 15.71ms | 24.49ms |
bin/server_node_express | http://127.0.0.1:3000/ | 0 | 348348 | 53.82MB | 11588.36 | 1.79MB | 1.46k | 160.56 | 2.27k | 68.38% | 85.64ms | 18.43ms | 683.13ms | 95.63% | 86.37ms | 86.65ms | 87.29ms | 89.20ms |
bin/server_node_express | http://127.0.0.1:3000/user | 0 | 344033 | 53.15MB | 11449.4 | 1.77MB | 1.44k | 141.12 | 2.18k | 72.50% | 86.68ms | 36.28ms | 1.08s | 95.66% | 87.24ms | 87.42ms | 87.58ms | 89.13ms |
bin/server_node_express | http://127.0.0.1:3000/user/0 | 0 | 307982 | 56.39MB | 10244.34 | 1.88MB | 1.30k | 353.95 | 5.29k | 89.12% | 93.11ms | 45.15ms | 1.09s | 89.37% | 97.27ms | 98.06ms | 106.02ms | 130.82ms |
bin/server_python_flask | http://127.0.0.1:3000/ | 179 | 14112 | 2.07MB | 469.67 | 70.63KB | 438.22 | 435.07 | 2.97k | 77.17% | 49.68ms | 89.53ms | 3.28s | 96.03% | 44.57ms | 44.93ms | 45.39ms | 601.73ms |
bin/server_python_flask | http://127.0.0.1:3000/user | 272 | 20373 | 2.99MB | 678.66 | 102.06KB | 338.75 | 352.68 | 1.19k | 76.98% | 72.15ms | 151.94ms | 3.94s | 96.12% | 46.27ms | 46.57ms | 47.06ms | 612.41ms |
bin/server_python_flask | http://127.0.0.1:3000/user/0 | 0 | 4762 | 855.67KB | 158.26 | 28.44KB | 202.87 | 186.67 | 780.00 | 70.23% | 71.33ms | 120.57ms | 878.83ms | 91.35% | 37.02ms | 62.84ms | 140.42ms | 832.97ms |
bin/server_python_sanic | http://127.0.0.1:3000/ | 0 | 6507225 | 738.49MB | 216248.64 | 24.54MB | 27.26k | 6.10k | 59.77k | 69.27% | 4.60ms | 3.34ms | 51.46ms | 77.70% | 3.86ms | 6.63ms | 7.71ms | 16.55ms |
bin/server_python_sanic | http://127.0.0.1:3000/user | 0 | 6027117 | 684.00MB | 200373.66 | 22.74MB | 25.26k | 5.08k | 55.16k | 69.92% | 4.93ms | 3.38ms | 59.31ms | 77.22% | 4.20ms | 7.05ms | 7.83ms | 16.84ms |
bin/server_python_sanic | http://127.0.0.1:3000/user/0 | 0 | 6307807 | 0.88GB | 209760.13 | 29.81MB | 26.43k | 6.08k | 57.14k | 68.32% | 4.71ms | 3.30ms | 48.53ms | 77.23% | 3.97ms | 6.90ms | 7.73ms | 16.39ms |
bin/server_rust_iron | http://127.0.0.1:3000/ | 0 | 11444364 | 818.56MB | 380822.91 | 27.24MB | 54.76k | 38.07k | 135.15k | 57.05% | 309.11us | 303.98us | 46.98ms | 96.89% | 301.00us | 389.00us | 477.00us | 842.00us |
bin/server_rust_iron | http://127.0.0.1:3000/user | 0 | 10817548 | 773.73MB | 360281.54 | 25.77MB | 60.41k | 35.89k | 136.57k | 66.72% | 313.84us | 261.07us | 30.24ms | 95.64% | 311.00us | 392.00us | 477.00us | 751.00us |
bin/server_rust_iron | http://127.0.0.1:3000/user/0 | 0 | 9772517 | 1.19GB | 324950.53 | 40.60MB | 40.92k | 34.26k | 132.12k | 67.62% | 346.60us | 289.12us | 31.46ms | 91.79% | 330.00us | 453.00us | 576.00us | 0.99ms |
bin/server_rust_nickel | http://127.0.0.1:3000/ | 0 | 4870844 | 603.88MB | 161986.71 | 20.08MB | 163.19k | 12.98k | 205.17k | 76.67% | 76.42us | 32.13us | 12.96ms | 66.96% | 60.00us | 112.00us | 121.00us | 130.00us |
bin/server_rust_nickel | http://127.0.0.1:3000/user | 0 | 9037151 | 1.09GB | 300775.0 | 37.29MB | 151.41k | 13.86k | 210.60k | 69.83% | 51.94us | 23.02us | 10.21ms | 83.10% | 46.00us | 68.00us | 77.00us | 87.00us |
bin/server_rust_nickel | http://127.0.0.1:3000/user/0 | 0 | 10066517 | 1.55GB | 334773.22 | 52.68MB | 112.43k | 58.13k | 189.35k | 54.00% | 50.53us | 22.25us | 10.98ms | 88.43% | 51.00us | 58.00us | 67.00us | 85.00us |
bin/server_rust_rocket | http://127.0.0.1:3000/ | 0 | 10908846 | 0.92GB | 362640.69 | 31.47MB | 121.84k | 50.66k | 204.76k | 54.89% | 68.20us | 42.09us | 11.98ms | 94.41% | 64.00us | 88.00us | 102.00us | 129.00us |
bin/server_rust_rocket | http://127.0.0.1:3000/user | 0 | 10859171 | 0.92GB | 361154.03 | 31.34MB | 121.28k | 32.99k | 187.25k | 58.33% | 72.60us | 44.34us | 11.86ms | 95.20% | 71.00us | 90.00us | 105.00us | 141.00us |
bin/server_rust_rocket | http://127.0.0.1:3000/user/0 | 0 | 9873379 | 1.49GB | 328320.21 | 50.72MB | 110.28k | 61.67k | 194.74k | 57.22% | 75.67us | 46.89us | 12.18ms | 93.70% | 68.00us | 101.00us | 115.00us | 146.00us |
from web-frameworks.
It seems to be about the same relative values as compared to the 1s test (^.^:), go just stomps everything else with rust close behind, etc... etc...
Interestingly flask got overloaded well enough that it started having a tiny bit of errors overall, still poor compared to everything else that is error-less. ^.^
Most things seem to have a pretty good worst-case latency as well (Rust had the best worst-case by far of anything else). To continue tests I think I'd need to start overwhelming them and seeing when they start to fail.
Should I toss my script into the repo? Not pretty at all but it works.
from web-frameworks.
Also apparently I had req/s and throughput backwards, ignore that, it's fixed in the code now. :-)
from web-frameworks.
I think we should monitor memory usage, that should have a high value in the analysis. I missed analyzing Lucky (Crystal), I didn't find it in your analysis.
from web-frameworks.
I think we should improve the presentation of the results and even create a kind of graphics in this style, we can even put the results in different environments like win, Linux, Mac and their configs
eg.
https://screenshots.firefox.com/6yABrQ90SYXmC0j8/markojs.com => https://markojs.com/
from web-frameworks.
Yeah this is a very raw dump of data, it could easily be output in any way.
And Lucky must not have been in the latest git master as that is what I used. ^.^
from web-frameworks.
I whipped up a C++ server using libevent (libevent is the library that a lot, like a LOT of servers use, such as most servers in node, go, etc...) using the http(s) server API (this is a full server routing framework and all), I figure it should be a good baseline as most things build on top of libevent (should I PR it in?):
Results:
╰─➤ ../stats.exs -w 1 -d 2 evhtp rust crystal go
Total Cores: 16
Concurrent Connections: 1000
Processing servers:
- bin/server_cpp_evhtp
- bin/server_rust_iron
- bin/server_rust_nickel
- bin/server_rust_rocket
- bin/server_crystal_kemal
- bin/server_crystal_raze
- bin/server_crystal_router_cr
- bin/server_go_echo
- bin/server_go_fasthttprouter
- bin/server_go_gin
- bin/server_go_gorilla_mux
- bin/server_go_iris
Processing: bin/server_cpp_evhtp
- Launching server: bin/server_cpp_evhtp
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/85052466891014107342201867974
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 2s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/63776479130153606972920926661
-
- Performing test for 2s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 2s...
-
- Test Complete
- Shutting down server: bin/server_cpp_evhtp
Processing: bin/server_rust_iron
- Launching server: bin/server_rust_iron
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/50960473321844660981813177558
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 2s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/14935842623295547926488962464
-
- Performing test for 2s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 2s...
-
- Test Complete
- Shutting down server: bin/server_rust_iron
Processing: bin/server_rust_nickel
- Launching server: bin/server_rust_nickel
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/41094751679689971794331836364
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 2s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/20138720514572116449183414227
-
- Performing test for 2s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 2s...
-
- Test Complete
- Shutting down server: bin/server_rust_nickel
Processing: bin/server_rust_rocket
- Launching server: bin/server_rust_rocket
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/78685640120807708752827453990
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 2s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/14786272974517776962963874322
-
- Performing test for 2s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 2s...
-
- Test Complete
- Shutting down server: bin/server_rust_rocket
Processing: bin/server_crystal_kemal
- Launching server: bin/server_crystal_kemal
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/54241887579774356660508436422
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 2s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/33170668274847421256260100416
-
- Performing test for 2s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 2s...
-
- Test Complete
- Shutting down server: bin/server_crystal_kemal
Processing: bin/server_crystal_raze
- Launching server: bin/server_crystal_raze
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/49483462420708822452097699262
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 2s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/88847091332806675615694442889
-
- Performing test for 2s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 2s...
-
- Test Complete
- Shutting down server: bin/server_crystal_raze
Processing: bin/server_crystal_router_cr
- Launching server: bin/server_crystal_router_cr
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/92880162931154408748190654382
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 2s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/65961200211467837485312574020
-
- Performing test for 2s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 2s...
-
- Test Complete
- Shutting down server: bin/server_crystal_router_cr
Processing: bin/server_go_echo
- Launching server: bin/server_go_echo
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/47497974667024372070828129764
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 2s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/52048888220067301400020550076
-
- Performing test for 2s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 2s...
-
- Test Complete
- Shutting down server: bin/server_go_echo
Processing: bin/server_go_fasthttprouter
- Launching server: bin/server_go_fasthttprouter
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/13106215207284706079191356801
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 2s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/78140608453618012880399138375
-
- Performing test for 2s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 2s...
-
- Test Complete
- Shutting down server: bin/server_go_fasthttprouter
Processing: bin/server_go_gin
- Launching server: bin/server_go_gin
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/3528480840031510853279355648
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 2s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/5975003814194492545887032882
-
- Performing test for 2s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 2s...
-
- Test Complete
- Shutting down server: bin/server_go_gin
Processing: bin/server_go_gorilla_mux
- Launching server: bin/server_go_gorilla_mux
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/78308744715842431603902706820
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 2s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/13179253381389641733706742759
-
- Performing test for 2s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 2s...
-
- Test Complete
- Shutting down server: bin/server_go_gorilla_mux
Processing: bin/server_go_iris
- Launching server: bin/server_go_iris
-
- Warming up for 1s 3 times...
-
-
- Warming up URL: http://127.0.0.1:3000/
-
-
-
- Warming up URL: http://127.0.0.1:3000/user/40823519989550834248632716959
-
-
-
- Warming up URL: http://127.0.0.1:3000/user
-
- URL: http://127.0.0.1:3000/
-
- Performing test for 2s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user/43977034345614673322365402250
-
- Performing test for 2s...
-
- Test Complete
- URL: http://127.0.0.1:3000/user
-
- Performing test for 2s...
-
- Test Complete
- Shutting down server: bin/server_go_iris
Path | URL | Errors | Total Requests Count | Total Requests/s | Total Requests Throughput | Total Throughput/s | Req/s Avg | Req/s Stdev | Req/s Max | Req/s +/- | Latency Avg | Latency Stdev | Latency Max | Latency +/- | 50% | 75% | 90% | 99% |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
bin/server_cpp_evhtp | http://127.0.0.1:3000/ | 0 | 1427890 | 687945.81 | 87.15MB | 41.99MB | 89.24k | 25.87k | 130.30k | 55.62% | 1.86ms | 2.76ms | 27.33ms | 87.73% | 613.00us | 2.01ms | 5.38ms | 12.91ms |
bin/server_cpp_evhtp | http://127.0.0.1:3000/user | 0 | 1353714 | 662471.43 | 82.62MB | 40.43MB | 84.61k | 26.36k | 127.38k | 56.25% | 1.83ms | 2.47ms | 26.10ms | 87.14% | 645.00us | 2.29ms | 5.02ms | 11.64ms |
bin/server_cpp_evhtp | http://127.0.0.1:3000/user/0 | 0 | 1344998 | 646974.87 | 120.57MB | 58.00MB | 84.21k | 25.52k | 124.68k | 53.12% | 1.88ms | 2.59ms | 28.04ms | 87.52% | 663.00us | 2.26ms | 5.13ms | 12.45ms |
bin/server_crystal_kemal | http://127.0.0.1:3000/ | 0 | 127254 | 62676.29 | 13.11MB | 6.46MB | 8.00k | 0.90k | 9.97k | 80.00% | 14.82ms | 3.28ms | 33.93ms | 77.38% | 13.66ms | 13.98ms | 20.92ms | 23.29ms |
bin/server_crystal_kemal | http://127.0.0.1:3000/user | 0 | 86446 | 42190.2 | 8.90MB | 4.35MB | 5.43k | 486.91 | 6.29k | 70.62% | 22.84ms | 4.45ms | 51.90ms | 73.43% | 24.09ms | 24.38ms | 25.18ms | 36.39ms |
bin/server_crystal_kemal | http://127.0.0.1:3000/user/0 | 0 | 78361 | 38510.06 | 10.31MB | 5.07MB | 4.92k | 267.68 | 5.78k | 70.62% | 25.38ms | 2.65ms | 32.70ms | 90.12% | 25.96ms | 26.12ms | 26.29ms | 31.22ms |
bin/server_crystal_raze | http://127.0.0.1:3000/ | 0 | 136821 | 66842.83 | 8.09MB | 3.95MB | 8.59k | 593.47 | 10.10k | 80.62% | 14.48ms | 3.55ms | 31.16ms | 77.41% | 12.15ms | 17.69ms | 18.36ms | 23.95ms |
bin/server_crystal_raze | http://127.0.0.1:3000/user | 0 | 135620 | 66835.34 | 8.02MB | 3.95MB | 8.51k | 340.56 | 8.95k | 85.62% | 14.69ms | 3.28ms | 26.70ms | 71.21% | 12.75ms | 19.15ms | 19.60ms | 21.68ms |
bin/server_crystal_raze | http://127.0.0.1:3000/user/0 | 0 | 124093 | 60863.38 | 10.89MB | 5.34MB | 7.79k | 656.10 | 8.62k | 90.62% | 16.05ms | 3.64ms | 40.21ms | 72.04% | 14.04ms | 20.37ms | 20.81ms | 29.07ms |
bin/server_crystal_router_cr | http://127.0.0.1:3000/ | 0 | 150720 | 73293.74 | 8.91MB | 4.33MB | 9.46k | 1.20k | 12.64k | 78.12% | 12.45ms | 7.31ms | 218.55ms | 96.62% | 11.02ms | 14.40ms | 17.12ms | 23.94ms |
bin/server_crystal_router_cr | http://127.0.0.1:3000/user | 0 | 130501 | 64578.02 | 7.72MB | 3.82MB | 8.19k | 424.34 | 9.27k | 58.12% | 15.27ms | 3.60ms | 26.85ms | 78.21% | 12.91ms | 18.74ms | 19.36ms | 24.39ms |
bin/server_crystal_router_cr | http://127.0.0.1:3000/user/0 | 0 | 137251 | 67077.85 | 12.04MB | 5.89MB | 8.62k | 759.16 | 10.10k | 73.12% | 14.20ms | 3.25ms | 215.99ms | 76.03% | 12.74ms | 15.05ms | 19.09ms | 22.13ms |
bin/server_go_echo | http://127.0.0.1:3000/ | 0 | 545981 | 264975.13 | 60.40MB | 29.31MB | 34.09k | 4.69k | 47.53k | 66.25% | 4.46ms | 14.23ms | 210.97ms | 98.67% | 2.41ms | 4.27ms | 6.25ms | 61.39ms |
bin/server_go_echo | http://127.0.0.1:3000/user | 0 | 535549 | 259563.09 | 59.25MB | 28.71MB | 33.45k | 4.95k | 48.13k | 65.00% | 3.70ms | 7.29ms | 208.84ms | 96.72% | 2.40ms | 4.45ms | 6.96ms | 18.17ms |
bin/server_go_echo | http://127.0.0.1:3000/user/0 | 0 | 516149 | 250105.88 | 71.87MB | 34.82MB | 32.26k | 4.32k | 47.08k | 68.12% | 3.46ms | 5.30ms | 216.23ms | 96.41% | 2.57ms | 4.61ms | 6.61ms | 11.96ms |
bin/server_go_fasthttprouter | http://127.0.0.1:3000/ | 0 | 1079061 | 526945.72 | 95.70MB | 46.74MB | 67.62k | 15.57k | 107.68k | 68.12% | 1.61ms | 1.43ms | 21.69ms | 88.18% | 1.12ms | 1.86ms | 3.24ms | 7.38ms |
bin/server_go_fasthttprouter | http://127.0.0.1:3000/user | 0 | 1026163 | 503337.64 | 91.01MB | 44.64MB | 64.18k | 15.05k | 109.47k | 68.12% | 1.80ms | 2.80ms | 205.80ms | 93.66% | 1.17ms | 2.04ms | 3.67ms | 8.62ms |
bin/server_go_fasthttprouter | http://127.0.0.1:3000/user/0 | 0 | 981917 | 475993.96 | 153.57MB | 74.45MB | 61.26k | 13.09k | 101.01k | 68.75% | 1.85ms | 1.98ms | 60.01ms | 89.38% | 1.16ms | 2.10ms | 3.98ms | 10.18ms |
bin/server_go_gin | http://127.0.0.1:3000/ | 0 | 453463 | 221348.85 | 50.16MB | 24.49MB | 28.34k | 4.19k | 41.77k | 68.75% | 5.55ms | 17.95ms | 415.27ms | 98.39% | 3.05ms | 5.06ms | 7.57ms | 79.31ms |
bin/server_go_gin | http://127.0.0.1:3000/user | 0 | 449422 | 220660.12 | 49.72MB | 24.41MB | 28.10k | 5.22k | 44.00k | 69.38% | 5.21ms | 11.55ms | 232.69ms | 95.91% | 3.04ms | 5.49ms | 9.53ms | 30.46ms |
bin/server_go_gin | http://127.0.0.1:3000/user/0 | 0 | 436164 | 211764.33 | 60.31MB | 29.28MB | 27.26k | 3.88k | 43.44k | 70.00% | 4.52ms | 9.15ms | 212.63ms | 97.71% | 3.14ms | 5.30ms | 7.67ms | 22.05ms |
bin/server_go_gorilla_mux | http://127.0.0.1:3000/ | 0 | 521280 | 253238.23 | 57.67MB | 28.01MB | 32.59k | 5.23k | 49.03k | 70.00% | 3.89ms | 9.99ms | 230.37ms | 98.68% | 2.52ms | 4.38ms | 6.45ms | 16.33ms |
bin/server_go_gorilla_mux | http://127.0.0.1:3000/user | 0 | 503400 | 247116.6 | 55.69MB | 27.34MB | 31.43k | 5.94k | 47.71k | 72.50% | 4.87ms | 13.98ms | 217.81ms | 98.00% | 2.52ms | 4.65ms | 7.55ms | 50.91ms |
bin/server_go_gorilla_mux | http://127.0.0.1:3000/user/0 | 0 | 459921 | 222029.71 | 64.04MB | 30.91MB | 28.71k | 3.78k | 40.53k | 68.75% | 3.77ms | 6.19ms | 240.05ms | 97.34% | 2.82ms | 4.78ms | 6.78ms | 13.48ms |
bin/server_go_iris | http://127.0.0.1:3000/ | 0 | 615823 | 299482.13 | 68.13MB | 33.13MB | 38.49k | 6.00k | 58.30k | 70.00% | 3.21ms | 7.84ms | 210.11ms | 98.49% | 2.06ms | 3.69ms | 5.88ms | 12.78ms |
bin/server_go_iris | http://127.0.0.1:3000/user | 0 | 596330 | 293099.65 | 65.97MB | 32.42MB | 37.26k | 6.66k | 60.31k | 72.50% | 3.67ms | 9.00ms | 208.04ms | 97.88% | 2.20ms | 4.02ms | 6.60ms | 17.81ms |
bin/server_go_iris | http://127.0.0.1:3000/user/0 | 0 | 580876 | 282486.16 | 80.88MB | 39.33MB | 36.23k | 5.38k | 52.11k | 70.00% | 3.77ms | 11.33ms | 214.13ms | 99.00% | 2.18ms | 3.93ms | 6.00ms | 15.13ms |
bin/server_rust_iron | http://127.0.0.1:3000/ | 0 | 801804 | 387449.37 | 57.35MB | 27.71MB | 57.59k | 40.74k | 114.62k | 44.29% | 273.99us | 191.92us | 8.11ms | 89.95% | 269.00us | 337.00us | 412.00us | 730.00us |
bin/server_rust_iron | http://127.0.0.1:3000/user | 0 | 776765 | 377428.76 | 55.56MB | 27.00MB | 65.10k | 32.97k | 117.74k | 65.83% | 301.04us | 171.63us | 7.30ms | 83.08% | 298.00us | 366.00us | 436.00us | 731.00us |
bin/server_rust_iron | http://127.0.0.1:3000/user/0 | 0 | 692034 | 338555.41 | 86.46MB | 42.30MB | 49.73k | 34.20k | 108.94k | 46.43% | 340.25us | 187.55us | 8.02ms | 76.21% | 332.00us | 427.00us | 525.00us | 0.91ms |
bin/server_rust_nickel | http://127.0.0.1:3000/ | 0 | 635294 | 312094.68 | 78.76MB | 38.69MB | 106.60k | 26.16k | 139.32k | 51.67% | 48.67us | 80.92us | 8.07ms | 99.87% | 47.00us | 62.00us | 72.00us | 92.00us |
bin/server_rust_nickel | http://127.0.0.1:3000/user | 0 | 608854 | 300908.77 | 75.48MB | 37.31MB | 153.02k | 6.29k | 173.70k | 77.50% | 46.96us | 23.97us | 4.43ms | 81.39% | 38.00us | 50.00us | 86.00us | 97.00us |
bin/server_rust_nickel | http://127.0.0.1:3000/user/0 | 0 | 758688 | 370477.55 | 119.38MB | 58.30MB | 95.51k | 15.73k | 123.40k | 56.25% | 46.65us | 86.10us | 8.04ms | 99.71% | 42.00us | 53.00us | 64.00us | 89.00us |
bin/server_rust_rocket | http://127.0.0.1:3000/ | 0 | 780129 | 382597.16 | 67.70MB | 33.20MB | 98.11k | 21.17k | 133.01k | 71.25% | 65.72us | 112.27us | 8.07ms | 99.70% | 56.00us | 82.00us | 98.00us | 127.00us |
bin/server_rust_rocket | http://127.0.0.1:3000/user | 0 | 598831 | 296461.41 | 51.97MB | 25.73MB | 150.65k | 4.50k | 159.10k | 65.00% | 72.21us | 44.34us | 12.10ms | 85.30% | 58.00us | 81.00us | 139.00us | 155.00us |
bin/server_rust_rocket | http://127.0.0.1:3000/user/0 | 0 | 623223 | 304948.38 | 96.28MB | 47.11MB | 104.48k | 15.43k | 126.24k | 61.67% | 74.94us | 107.88us | 11.67ms | 99.67% | 64.00us | 96.00us | 122.00us | 155.00us |
As expected, C++ was absolutely faster than everything else by a fairly healthy (though not a magnetudal) margin, with Go's fasthttprouter coming up second.
Should I PR it in to use as a good baseline @tbrand and others?
from web-frameworks.
I added a final listing of 'Rankings' based on the average requests per second, running the above again gives (skipping all the setup/running stuff as it's identical, and as usual a 2 second testing time does not give any real difference from 30 second testing time, so 2s is what I used so I'm not sitting here for a half hour while it runs):
|Path|URL|Errors|Total Requests Count|Total Requests/s|Total Requests Throughput|Total Throughput/s|Req/s Avg|Req/s Std
ev|Req/s Max|Req/s +/-|Latency Avg|Latency Stdev|Latency Max|Latency +/-|50%|75%|90%|99%|
|:---|:---|:---|:---|:---|:---|:---|:---|:---|:---|:---|:---|:---|:---|:---|:---|:---|:---|:---|
|bin/server_cpp_evhtp|http://127.0.0.1:3000/|0|1395094|671023.13|85.15MB|40.96MB|87.48k|24.27k|125.13k|57.50%|1.78ms|2.
55ms|29.57ms|88.57%|635.00us|2.03ms|4.77ms|12.59ms|
|bin/server_cpp_evhtp|http://127.0.0.1:3000/user|0|1331146|652502.4|81.25MB|39.83MB|83.43k|24.54k|126.51k|55.62%|1.92ms
|3.00ms|205.95ms|89.27%|679.00us|2.30ms|5.14ms|12.55ms|
|bin/server_cpp_evhtp|http://127.0.0.1:3000/user/0|0|1323210|637653.77|118.62MB|57.16MB|82.88k|25.60k|124.44k|61.25%|1.
76ms|2.34ms|26.02ms|87.82%|658.00us|2.15ms|4.67ms|11.46ms|
|bin/server_crystal_kemal|http://127.0.0.1:3000/|0|102046|49847.64|10.51MB|5.13MB|6.41k|750.52|7.23k|93.75%|19.65ms|5.0
6ms|67.25ms|75.54%|20.16ms|20.59ms|21.77ms|45.71ms|
|bin/server_crystal_kemal|http://127.0.0.1:3000/user|0|82170|40430.31|8.46MB|4.16MB|5.16k|678.14|6.07k|80.62%|23.67ms|4
.16ms|63.25ms|85.56%|23.46ms|23.82ms|25.69ms|40.77ms|
|bin/server_crystal_kemal|http://127.0.0.1:3000/user/0|0|72036|35269.87|9.48MB|4.64MB|4.52k|528.98|5.05k|91.88%|27.55ms
|4.45ms|67.80ms|83.11%|25.85ms|26.26ms|33.70ms|48.19ms|
|bin/server_crystal_raze|http://127.0.0.1:3000/|0|137731|67679.45|8.14MB|4.00MB|8.65k|521.85|9.53k|66.88%|14.00ms|3.17m
s|23.63ms|56.88%|12.25ms|17.04ms|17.63ms|20.74ms|
|bin/server_crystal_raze|http://127.0.0.1:3000/user|0|111396|54934.95|6.59MB|3.25MB|7.00k|745.21|7.78k|91.88%|17.32ms|3
.50ms|221.38ms|67.11%|18.28ms|18.86ms|20.06ms|25.23ms|
|bin/server_crystal_raze|http://127.0.0.1:3000/user/0|0|102461|49862.13|8.99MB|4.37MB|6.44k|383.59|7.07k|80.00%|19.44ms
|3.25ms|41.51ms|74.79%|20.28ms|20.51ms|21.04ms|27.53ms|
|bin/server_crystal_router_cr|http://127.0.0.1:3000/|0|144944|70487.87|8.57MB|4.17MB|9.11k|496.64|10.03k|66.25%|13.73ms
|3.48ms|32.13ms|77.10%|11.87ms|17.14ms|17.75ms|25.18ms|
|bin/server_crystal_router_cr|http://127.0.0.1:3000/user|0|122785|60668.24|7.26MB|3.59MB|7.71k|1.21k|10.00k|71.25%|15.1
7ms|4.82ms|225.68ms|88.06%|14.11ms|18.66ms|20.38ms|26.56ms|
|bin/server_crystal_router_cr|http://127.0.0.1:3000/user/0|0|141745|69016.54|12.44MB|6.06MB|8.90k|1.01k|11.28k|71.25%|1
3.26ms|3.32ms|27.99ms|77.15%|12.02ms|14.07ms|18.83ms|23.58ms|
|bin/server_go_echo|http://127.0.0.1:3000/|0|548500|265442.49|60.68MB|29.36MB|34.22k|6.12k|51.41k|70.00%|3.61ms|10.05ms
|209.73ms|99.21%|2.30ms|4.11ms|6.10ms|12.35ms|
|bin/server_go_echo|http://127.0.0.1:3000/user|0|535638|261031.4|59.26MB|28.88MB|33.51k|4.25k|46.94k|68.75%|4.29ms|12.7
3ms|218.46ms|98.47%|2.27ms|4.36ms|6.60ms|27.21ms|
|bin/server_go_echo|http://127.0.0.1:3000/user/0|0|525061|256538.91|73.11MB|35.72MB|32.76k|5.58k|49.35k|72.50%|4.48ms|1
4.43ms|216.95ms|98.71%|2.34ms|4.37ms|6.42ms|61.52ms|
|bin/server_go_fasthttprouter|http://127.0.0.1:3000/|0|1097978|531179.1|97.38MB|47.11MB|68.61k|14.23k|120.32k|73.12%|2.
05ms|7.95ms|207.97ms|99.10%|1.09ms|1.75ms|3.43ms|9.38ms|
|bin/server_go_fasthttprouter|http://127.0.0.1:3000/user|0|1031467|506227.56|91.48MB|44.90MB|64.50k|14.27k|106.32k|69.3
8%|1.78ms|3.82ms|202.72ms|96.90%|1.17ms|2.00ms|3.49ms|7.71ms|
|bin/server_go_fasthttprouter|http://127.0.0.1:3000/user/0|0|1005476|487158.19|157.26MB|76.19MB|62.86k|18.76k|108.31k|6
8.75%|2.10ms|7.66ms|205.56ms|99.00%|1.10ms|1.93ms|3.61ms|9.74ms|
|bin/server_go_gin|http://127.0.0.1:3000/|0|452591|218616.49|50.07MB|24.18MB|28.25k|3.73k|46.36k|75.62%|4.13ms|7.56ms|2
22.73ms|97.51%|3.12ms|5.14ms|7.43ms|16.04ms|
|bin/server_go_gin|http://127.0.0.1:3000/user|0|451650|216942.3|49.96MB|24.00MB|28.19k|4.03k|41.78k|71.25%|4.35ms|6.57m
s|207.49ms|93.62%|3.03ms|5.25ms|8.51ms|21.22ms|
|bin/server_go_gin|http://127.0.0.1:3000/user/0|0|442026|213831.06|61.55MB|29.77MB|27.60k|4.31k|41.96k|67.50%|5.07ms|13
.23ms|228.19ms|98.17%|3.09ms|5.20ms|7.89ms|30.64ms|
|bin/server_go_gorilla_mux|http://127.0.0.1:3000/|0|515065|250041.75|56.98MB|27.66MB|32.20k|3.90k|45.72k|63.75%|3.51ms|
4.60ms|209.53ms|95.48%|2.73ms|4.53ms|6.47ms|12.57ms|
|bin/server_go_gorilla_mux|http://127.0.0.1:3000/user|0|504362|244060.62|55.80MB|27.00MB|31.51k|4.75k|48.17k|64.38%|4.3
2ms|11.12ms|215.93ms|98.17%|2.62ms|4.64ms|7.12ms|21.48ms|
|bin/server_go_gorilla_mux|http://127.0.0.1:3000/user/0|0|455477|222109.9|63.42MB|30.93MB|28.42k|3.55k|40.67k|70.62%|4.
35ms|10.15ms|231.42ms|98.61%|3.05ms|4.99ms|7.09ms|18.13ms|
|bin/server_go_iris|http://127.0.0.1:3000/|0|619925|301331.9|68.58MB|33.34MB|38.68k|7.55k|67.02k|69.38%|4.35ms|15.35ms|
215.75ms|98.49%|1.99ms|3.71ms|5.95ms|83.36ms|
|bin/server_go_iris|http://127.0.0.1:3000/user|0|595026|287076.76|65.83MB|31.76MB|37.01k|6.13k|63.92k|75.62%|3.34ms|3.3
5ms|212.57ms|89.15%|2.30ms|4.28ms|6.95ms|16.01ms|
|bin/server_go_iris|http://127.0.0.1:3000/user/0|0|578516|277833.09|80.55MB|38.68MB|36.10k|5.79k|54.64k|70.62%|3.50ms|8
.64ms|208.74ms|98.53%|2.25ms|3.88ms|6.16ms|14.54ms|
|bin/server_rust_iron|http://127.0.0.1:3000/|0|786902|380163.34|56.28MB|27.19MB|56.50k|37.41k|117.18k|45.00%|271.93us|2
13.51us|10.29ms|91.86%|254.00us|337.00us|432.00us|0.89ms|
|bin/server_rust_iron|http://127.0.0.1:3000/user|0|712109|348706.38|50.93MB|24.94MB|71.62k|37.40k|112.63k|73.00%|233.93
us|151.66us|8.51ms|84.90%|216.00us|296.00us|355.00us|625.00us|
|bin/server_rust_iron|http://127.0.0.1:3000/user/0|0|689735|335170.19|86.17MB|41.87MB|57.80k|31.32k|109.81k|65.83%|338.
68us|225.26us|11.92ms|85.96%|334.00us|418.00us|508.00us|0.86ms|
|bin/server_rust_nickel|http://127.0.0.1:3000/|0|639506|315462.71|79.28MB|39.11MB|107.28k|33.83k|143.00k|63.33%|47.51us
|49.41us|7.99ms|95.30%|39.00us|48.00us|88.00us|106.00us|
|bin/server_rust_nickel|http://127.0.0.1:3000/user|0|599424|296306.4|74.32MB|36.74MB|150.69k|3.42k|154.48k|85.00%|49.29
us|30.71us|7.65ms|86.98%|41.00us|50.00us|82.00us|92.00us|
|bin/server_rust_nickel|http://127.0.0.1:3000/user/0|0|728491|353094.08|113.94MB|55.22MB|122.23k|7.61k|141.77k|71.67%|4
8.08us|90.67us|9.61ms|99.91%|45.00us|51.00us|57.00us|73.00us|
|bin/server_rust_rocket|http://127.0.0.1:3000/|0|666507|325571.64|57.84MB|28.25MB|111.72k|27.71k|150.06k|58.33%|66.12us
|78.95us|8.04ms|97.82%|62.00us|75.00us|120.00us|153.00us|
|bin/server_rust_rocket|http://127.0.0.1:3000/user|0|605937|298236.53|52.59MB|25.88MB|152.44k|3.89k|161.07k|67.50%|72.8
0us|105.77us|8.08ms|99.86%|66.00us|76.00us|117.00us|136.00us|
|bin/server_rust_rocket|http://127.0.0.1:3000/user/0|0|652278|320427.22|100.77MB|49.50MB|109.44k|21.11k|153.35k|58.33%|
74.28us|151.27us|11.95ms|99.76%|61.00us|93.00us|108.00us|141.00us|
Rankings
Ranking by Average Requests per second:
- 653726 req/sec : bin/server_cpp_evhtp
- 508188 req/sec : bin/server_go_fasthttprouter
- 354679 req/sec : bin/server_rust_iron
- 321621 req/sec : bin/server_rust_nickel
- 314745 req/sec : bin/server_rust_rocket
- 288747 req/sec : bin/server_go_iris
- 261004 req/sec : bin/server_go_echo
- 238737 req/sec : bin/server_go_gorilla_mux
- 216463 req/sec : bin/server_go_gin
- 66724 req/sec : bin/server_crystal_router_cr
- 57492 req/sec : bin/server_crystal_raze
- 41849 req/sec : bin/server_crystal_kemal
from web-frameworks.
No I don't know why crystal is so very slow compared to the rest, this is a highly multi-core system so I can only guess that it's not taking advantage of threading or something... This would of course be more invisible the fewer cores you have (as was tested in another issue somewhere). Is there anyone that can take a look at the crystal servers and see how to get them working with many cores?
from web-frameworks.
And for the next update of the stats displayer it adds a space around the |
for github tables to not break since github doesn't handle long tables properly otherwise... >.<
Example:
Path | URL | Errors | Total Requests Count | Total Requests/s | Total Requests Throughput | Total Throughput/s | Req/s Avg | Req/s Stdev | Req/s Max | Req/s +/- | Latency Avg | Latency Stdev | Latency Max | Latency +/- | 50% | 75% | 90% | 99% |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
bin/server_cpp_evhtp | http://127.0.0.1:3000/ | 0 | 1422249 | 691995.66 | 86.81MB | 42.24MB | 89.08k | 24.64k | 128.81k | 62.50% | 1.99ms | 3.50ms | 204.34ms | 89.59% | 660.00us | 2.01ms | 5.65ms | 14.18ms |
bin/server_cpp_evhtp | http://127.0.0.1:3000/user | 0 | 1340528 | 662229.83 | 81.82MB | 40.42MB | 84.11k | 26.92k | 131.42k | 59.38% | 1.97ms | 3.62ms | 209.15ms | 91.27% | 685.00us | 2.29ms | 5.12ms | 13.08ms |
bin/server_cpp_evhtp | http://127.0.0.1:3000/user/0 | 0 | 1337724 | 651040.1 | 117.37MB | 57.12MB | 83.74k | 23.53k | 127.32k | 59.38% | 1.91ms | 2.64ms | 26.26ms | 87.95% | 693.00us | 2.23ms | 5.20ms | 12.68ms |
bin/server_rust_iron | http://127.0.0.1:3000/ | 0 | 774340 | 375713.92 | 55.39MB | 26.87MB | 64.92k | 41.16k | 113.29k | 55.00% | 247.44us | 213.02us | 18.17ms | 94.08% | 194.00us | 314.00us | 395.00us | 823.00us |
bin/server_rust_iron | http://127.0.0.1:3000/user | 0 | 757888 | 369106.03 | 54.21MB | 26.40MB | 63.51k | 25.55k | 111.00k | 58.33% | 312.13us | 173.36us | 12.16ms | 77.50% | 298.00us | 389.00us | 488.00us | 835.00us |
bin/server_rust_iron | http://127.0.0.1:3000/user/0 | 0 | 668229 | 323079.4 | 83.48MB | 40.36MB | 48.01k | 29.84k | 98.97k | 51.43% | 349.31us | 251.44us | 24.21ms | 86.74% | 336.00us | 436.00us | 552.00us | 0.98ms |
Rankings
Ranking by Average Requests per second:
- 668421 req/sec : bin/server_cpp_evhtp
- 355966 req/sec : bin/server_rust_iron
from web-frameworks.
Ran a larger test, results (with the very long 'running' part snipped out, I need to put that behind a verbose flag... hmm, actually, doing that now, done):
╰─➤ ../stats.exs -w 1 -d 3 cpp crystal elixir go node rust python
Total Cores: 16
Concurrent Connections: 1000
Processing servers:
- bin/server_cpp_evhtp
- bin/server_crystal_amber
- bin/server_crystal_kemal
- bin/server_crystal_lucky
- bin/server_crystal_raze
- bin/server_crystal_router_cr
- bin/server_elixir_phoenix
- bin/server_elixir_plug
- bin/server_go_echo
- bin/server_go_fasthttprouter
- bin/server_go_gin
- bin/server_go_gorilla_mux
- bin/server_go_iris
- bin/server_python_django
- bin/server_node_clusterexpress
- bin/server_node_clusterpolka
- bin/server_node_express
- bin/server_node_polka
- bin/server_rust_iron
- bin/server_rust_nickel
- bin/server_rust_rocket
- bin/server_python_django
- bin/server_python_flask
- bin/server_python_flask.py
- bin/server_python_japronto
- bin/server_python_sanic
Processing: bin/server_cpp_evhtp
Processing: bin/server_crystal_amber
unable to connect to 127.0.0.1:3000 Connection refused
unable to connect to 127.0.0.1:3000 Connection refused
unable to connect to 127.0.0.1:3000 Connection refused
unable to connect to 127.0.0.1:3000 Connection refused
-
-
- Test returned an unsuccessful error code, output of test of bin/server_crystal_amber:
-
unable to connect to 127.0.0.1:3000 Connection refused
-
-
- Test returned an unsuccessful error code, output of test of bin/server_crystal_amber:
-
unable to connect to 127.0.0.1:3000 Connection refused
-
-
- Test returned an unsuccessful error code, output of test of bin/server_crystal_amber:
-
Processing: bin/server_crystal_kemal
Processing: bin/server_crystal_lucky
Processing: bin/server_crystal_raze
Processing: bin/server_crystal_router_cr
Processing: bin/server_elixir_phoenix
Processing: bin/server_elixir_plug
Processing: bin/server_go_echo
Processing: bin/server_go_fasthttprouter
Processing: bin/server_go_gin
Processing: bin/server_go_gorilla_mux
Processing: bin/server_go_iris
Processing: bin/server_python_django
unable to connect to 127.0.0.1:3000 Connection refused
unable to connect to 127.0.0.1:3000 Connection refused
unable to connect to 127.0.0.1:3000 Connection refused
unable to connect to 127.0.0.1:3000 Connection refused
-
-
- Test returned an unsuccessful error code, output of test of bin/server_python_django:
-
unable to connect to 127.0.0.1:3000 Connection refused
-
-
- Test returned an unsuccessful error code, output of test of bin/server_python_django:
-
unable to connect to 127.0.0.1:3000 Connection refused
-
-
- Test returned an unsuccessful error code, output of test of bin/server_python_django:
-
Processing: bin/server_node_clusterexpress
Processing: bin/server_node_clusterpolka
Processing: bin/server_node_express
Processing: bin/server_node_polka
Processing: bin/server_rust_iron
Processing: bin/server_rust_nickel
Processing: bin/server_rust_rocket
Processing: bin/server_python_django
unable to connect to 127.0.0.1:3000 Connection refused
unable to connect to 127.0.0.1:3000 Connection refused
unable to connect to 127.0.0.1:3000 Connection refused
unable to connect to 127.0.0.1:3000 Connection refused
-
-
- Test returned an unsuccessful error code, output of test of bin/server_python_django:
-
unable to connect to 127.0.0.1:3000 Connection refused
-
-
- Test returned an unsuccessful error code, output of test of bin/server_python_django:
-
unable to connect to 127.0.0.1:3000 Connection refused
-
-
- Test returned an unsuccessful error code, output of test of bin/server_python_django:
-
Processing: bin/server_python_flask
Processing: bin/server_python_flask.py
Processing: bin/server_python_japronto
Processing: bin/server_python_sanic
Path | URL | Errors | Total Requests Count | Total Requests/s | Total Requests Throughput | Total Throughput/s | Req/s Avg | Req/s Stdev | Req/s Max | Req/s +/- | Latency Avg | Latency Stdev | Latency Max | Latency +/- | 50% | 75% | 90% | 99% |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
bin/server_cpp_evhtp | http://127.0.0.1:3000/ | 0 | 2146801 | 700856.19 | 131.03MB | 42.78MB | 89.75k | 26.75k | 129.38k | 60.00% | 1.87ms | 2.74ms | 206.28ms | 88.80% | 703.00us | 2.10ms | 4.96ms | 12.65ms |
bin/server_cpp_evhtp | http://127.0.0.1:3000/user | 0 | 2042801 | 670460.62 | 124.68MB | 40.92MB | 85.31k | 22.34k | 129.60k | 59.58% | 1.98ms | 2.66ms | 29.09ms | 87.69% | 729.00us | 2.37ms | 5.38ms | 12.77ms |
bin/server_cpp_evhtp | http://127.0.0.1:3000/user/0 | 0 | 2009790 | 653661.46 | 180.17MB | 58.60MB | 84.00k | 23.92k | 125.49k | 61.25% | 2.10ms | 3.03ms | 44.98ms | 88.89% | 768.00us | 2.31ms | 5.56ms | 14.17ms |
bin/server_crystal_kemal | http://127.0.0.1:3000/ | 0 | 178786 | 58884.96 | 18.41MB | 6.06MB | 7.49k | 0.90k | 8.85k | 79.58% | 16.20ms | 4.03ms | 224.09ms | 77.97% | 13.98ms | 20.00ms | 20.82ms | 24.18ms |
bin/server_crystal_kemal | http://127.0.0.1:3000/user | 0 | 128076 | 41974.45 | 13.19MB | 4.32MB | 5.36k | 764.14 | 7.50k | 68.75% | 22.30ms | 6.65ms | 227.04ms | 86.00% | 23.32ms | 23.95ms | 25.03ms | 31.60ms |
bin/server_crystal_kemal | http://127.0.0.1:3000/user/0 | 0 | 106713 | 34946.48 | 14.04MB | 4.60MB | 4.47k | 313.76 | 5.01k | 59.17% | 27.29ms | 3.75ms | 42.60ms | 81.74% | 26.10ms | 29.17ms | 32.64ms | 38.77ms |
bin/server_crystal_lucky | http://127.0.0.1:3000/ | 0 | 182524 | 60031.75 | 13.58MB | 4.47MB | 7.64k | 1.12k | 10.37k | 78.75% | 15.78ms | 9.97ms | 233.44ms | 99.18% | 13.59ms | 19.67ms | 20.93ms | 25.07ms |
bin/server_crystal_lucky | http://127.0.0.1:3000/user | 0 | 148667 | 49267.48 | 11.06MB | 3.66MB | 6.22k | 529.73 | 7.33k | 67.92% | 19.47ms | 4.36ms | 224.83ms | 67.33% | 20.91ms | 21.75ms | 23.13ms | 28.42ms |
bin/server_crystal_lucky | http://127.0.0.1:3000/user/0 | 0 | 145921 | 47959.94 | 16.42MB | 5.40MB | 6.11k | 478.00 | 7.20k | 67.92% | 20.49ms | 4.58ms | 39.32ms | 61.65% | 22.00ms | 22.74ms | 25.08ms | 30.11ms |
bin/server_crystal_raze | http://127.0.0.1:3000/ | 0 | 225835 | 73851.33 | 13.35MB | 4.37MB | 9.46k | 582.38 | 11.10k | 66.25% | 12.74ms | 3.24ms | 26.67ms | 79.39% | 11.45ms | 12.83ms | 18.12ms | 23.09ms |
bin/server_crystal_raze | http://127.0.0.1:3000/user | 0 | 166106 | 54811.58 | 9.82MB | 3.24MB | 6.95k | 646.19 | 8.70k | 73.75% | 17.30ms | 3.56ms | 228.75ms | 67.83% | 18.35ms | 18.91ms | 20.77ms | 25.28ms |
bin/server_crystal_raze | http://127.0.0.1:3000/user/0 | 0 | 158571 | 52145.41 | 13.91MB | 4.58MB | 6.64k | 495.51 | 7.48k | 65.00% | 18.86ms | 3.17ms | 35.20ms | 73.85% | 19.25ms | 19.94ms | 21.34ms | 27.04ms |
bin/server_crystal_router_cr | http://127.0.0.1:3000/ | 0 | 211581 | 69053.47 | 12.51MB | 4.08MB | 8.86k | 773.04 | 10.45k | 71.25% | 13.72ms | 3.64ms | 219.78ms | 81.87% | 11.74ms | 16.88ms | 17.50ms | 23.08ms |
bin/server_crystal_router_cr | http://127.0.0.1:3000/user | 0 | 180478 | 59762.71 | 10.67MB | 3.53MB | 7.55k | 662.21 | 8.82k | 80.42% | 16.30ms | 4.12ms | 224.79ms | 76.86% | 17.93ms | 18.91ms | 19.67ms | 26.45ms |
bin/server_crystal_router_cr | http://127.0.0.1:3000/user/0 | 0 | 186594 | 61161.62 | 16.37MB | 5.37MB | 7.81k | 0.85k | 8.85k | 85.42% | 15.95ms | 4.80ms | 230.37ms | 93.69% | 13.15ms | 19.05ms | 19.64ms | 29.21ms |
bin/server_elixir_phoenix | http://127.0.0.1:3000/ | 0 | 392222 | 127715.26 | 53.49MB | 17.42MB | 16.37k | 2.45k | 24.69k | 67.08% | 8.13ms | 13.38ms | 230.46ms | 96.68% | 7.42ms | 11.87ms | 16.39ms | 29.52ms |
bin/server_elixir_phoenix | http://127.0.0.1:3000/user | 0 | 341798 | 112499.31 | 46.61MB | 15.34MB | 14.26k | 2.58k | 21.24k | 71.25% | 9.73ms | 14.90ms | 235.38ms | 95.61% | 8.85ms | 13.98ms | 19.59ms | 38.70ms |
bin/server_elixir_phoenix | http://127.0.0.1:3000/user/0 | 0 | 363445 | 118529.23 | 59.96MB | 19.56MB | 15.17k | 2.99k | 22.31k | 64.17% | 9.46ms | 15.96ms | 258.15ms | 95.71% | 7.94ms | 13.72ms | 19.86ms | 40.53ms |
bin/server_elixir_plug | http://127.0.0.1:3000/ | 0 | 414371 | 135296.69 | 56.51MB | 18.45MB | 17.30k | 2.30k | 24.17k | 72.50% | 8.44ms | 15.79ms | 226.76ms | 97.98% | 7.36ms | 11.13ms | 15.39ms | 67.22ms |
bin/server_elixir_plug | http://127.0.0.1:3000/user | 0 | 393818 | 129466.22 | 53.71MB | 17.66MB | 16.46k | 3.74k | 25.53k | 72.92% | 9.61ms | 21.98ms | 444.51ms | 98.27% | 7.74ms | 12.38ms | 17.61ms | 97.53ms |
bin/server_elixir_plug | http://127.0.0.1:3000/user/0 | 0 | 378704 | 123785.16 | 62.12MB | 20.30MB | 15.82k | 2.11k | 23.29k | 69.17% | 8.61ms | 14.33ms | 243.67ms | 97.11% | 7.75ms | 12.05ms | 16.58ms | 32.89ms |
bin/server_go_echo | http://127.0.0.1:3000/ | 0 | 836884 | 272296.34 | 92.58MB | 30.12MB | 34.89k | 7.07k | 56.45k | 68.33% | 11.36ms | 57.79ms | 858.56ms | 97.09% | 2.28ms | 4.21ms | 6.76ms | 320.37ms |
bin/server_go_echo | http://127.0.0.1:3000/user | 0 | 818805 | 268245.8 | 90.58MB | 29.68MB | 34.07k | 5.97k | 66.68k | 71.25% | 3.69ms | 4.43ms | 204.76ms | 91.09% | 2.43ms | 4.76ms | 7.69ms | 18.67ms |
bin/server_go_echo | http://127.0.0.1:3000/user/0 | 0 | 797196 | 260281.45 | 111.00MB | 36.24MB | 33.19k | 4.61k | 47.89k | 69.17% | 4.11ms | 11.19ms | 217.11ms | 98.70% | 2.53ms | 4.44ms | 6.57ms | 18.62ms |
bin/server_go_fasthttprouter | http://127.0.0.1:3000/ | 0 | 1613754 | 525065.28 | 143.13MB | 46.57MB | 67.19k | 14.79k | 109.08k | 65.83% | 2.15ms | 8.07ms | 205.29ms | 99.30% | 1.16ms | 1.95ms | 3.52ms | 8.89ms |
bin/server_go_fasthttprouter | http://127.0.0.1:3000/user | 0 | 1513143 | 496574.35 | 134.20MB | 44.04MB | 63.12k | 12.94k | 103.04k | 68.33% | 1.93ms | 4.37ms | 210.16ms | 97.69% | 1.28ms | 2.12ms | 3.60ms | 7.97ms |
bin/server_go_fasthttprouter | http://127.0.0.1:3000/user/0 | 0 | 1461347 | 475919.35 | 228.56MB | 74.44MB | 60.84k | 14.61k | 108.00k | 69.17% | 2.34ms | 8.21ms | 208.87ms | 98.88% | 1.23ms | 2.26ms | 3.96ms | 10.97ms |
bin/server_go_gin | http://127.0.0.1:3000/ | 0 | 672089 | 217657.24 | 74.35MB | 24.08MB | 27.96k | 3.87k | 44.99k | 71.67% | 4.48ms | 7.22ms | 210.45ms | 96.57% | 3.39ms | 5.49ms | 7.91ms | 19.73ms |
bin/server_go_gin | http://127.0.0.1:3000/user | 0 | 666437 | 218536.11 | 73.73MB | 24.18MB | 27.72k | 3.85k | 43.58k | 65.83% | 4.72ms | 6.61ms | 236.01ms | 93.61% | 3.37ms | 5.69ms | 9.01ms | 24.72ms |
bin/server_go_gin | http://127.0.0.1:3000/user/0 | 0 | 654220 | 213276.88 | 91.09MB | 29.70MB | 27.24k | 3.54k | 37.51k | 71.25% | 4.81ms | 9.70ms | 215.64ms | 97.84% | 3.39ms | 5.60ms | 8.06ms | 22.65ms |
bin/server_go_gorilla_mux | http://127.0.0.1:3000/ | 0 | 780475 | 253054.67 | 86.34MB | 27.99MB | 32.44k | 4.66k | 46.40k | 67.50% | 3.96ms | 8.97ms | 212.90ms | 98.54% | 2.73ms | 4.63ms | 6.65ms | 16.11ms |
bin/server_go_gorilla_mux | http://127.0.0.1:3000/user | 0 | 751262 | 246782.03 | 83.11MB | 27.30MB | 31.31k | 4.74k | 45.35k | 68.33% | 4.60ms | 10.46ms | 217.00ms | 97.11% | 2.85ms | 4.99ms | 7.92ms | 25.03ms |
bin/server_go_gorilla_mux | http://127.0.0.1:3000/user/0 | 0 | 683985 | 221728.15 | 95.24MB | 30.87MB | 28.44k | 5.10k | 48.70k | 69.17% | 4.08ms | 6.63ms | 209.45ms | 97.18% | 3.16ms | 5.16ms | 7.30ms | 15.06ms |
bin/server_go_iris | http://127.0.0.1:3000/ | 0 | 933981 | 305170.79 | 103.32MB | 33.76MB | 38.90k | 7.98k | 66.70k | 67.08% | 3.89ms | 12.53ms | 226.85ms | 98.74% | 2.11ms | 3.75ms | 6.03ms | 22.09ms |
bin/server_go_iris | http://127.0.0.1:3000/user | 0 | 915065 | 298814.88 | 101.23MB | 33.06MB | 37.98k | 7.01k | 66.32k | 72.50% | 3.52ms | 8.29ms | 231.32ms | 97.75% | 2.20ms | 4.05ms | 6.51ms | 16.83ms |
bin/server_go_iris | http://127.0.0.1:3000/user/0 | 0 | 883461 | 287234.89 | 123.01MB | 39.99MB | 36.75k | 5.87k | 55.54k | 71.25% | 3.14ms | 4.91ms | 212.15ms | 96.22% | 2.34ms | 3.94ms | 6.04ms | 11.55ms |
bin/server_node_clusterexpress | http://127.0.0.1:3000/ | 0 | 313950 | 101420.93 | 48.50MB | 15.67MB | 13.01k | 1.99k | 17.53k | 67.08% | 9.59ms | 9.67ms | 232.48ms | 95.09% | 7.63ms | 10.16ms | 15.31ms | 46.90ms |
bin/server_node_clusterexpress | http://127.0.0.1:3000/user | 0 | 310855 | 100281.24 | 48.03MB | 15.49MB | 12.94k | 1.75k | 18.30k | 70.29% | 8.74ms | 5.56ms | 219.30ms | 85.53% | 7.61ms | 10.62ms | 15.20ms | 23.68ms |
bin/server_node_clusterexpress | http://127.0.0.1:3000/user/0 | 0 | 295890 | 95604.22 | 54.18MB | 17.51MB | 12.28k | 1.96k | 16.66k | 70.83% | 9.96ms | 8.70ms | 199.90ms | 95.11% | 7.74ms | 11.68ms | 15.61ms | 37.80ms |
bin/server_node_clusterpolka | http://127.0.0.1:3000/ | 0 | 641895 | 207034.72 | 60.60MB | 19.55MB | 26.66k | 9.89k | 56.31k | 61.25% | 4.64ms | 4.38ms | 209.56ms | 91.69% | 3.35ms | 6.88ms | 7.76ms | 19.35ms |
bin/server_node_clusterpolka | http://127.0.0.1:3000/user | 0 | 593817 | 191321.38 | 56.06MB | 18.06MB | 24.79k | 7.44k | 45.96k | 60.67% | 4.90ms | 4.23ms | 92.58ms | 88.59% | 3.67ms | 6.70ms | 7.98ms | 19.93ms |
bin/server_node_clusterpolka | http://127.0.0.1:3000/user/0 | 0 | 566578 | 183987.11 | 69.70MB | 22.63MB | 23.65k | 6.42k | 50.82k | 67.36% | 5.36ms | 5.05ms | 207.58ms | 91.96% | 3.95ms | 7.03ms | 8.63ms | 23.07ms |
bin/server_node_express | http://127.0.0.1:3000/ | 0 | 35269 | 11658.99 | 5.45MB | 1.80MB | 1.48k | 194.82 | 2.38k | 74.58% | 69.78ms | 30.39ms | 409.17ms | 96.72% | 79.42ms | 79.96ms | 80.27ms | 191.27ms |
bin/server_node_express | http://127.0.0.1:3000/user | 0 | 34377 | 11352.53 | 5.31MB | 1.75MB | 1.44k | 201.95 | 1.98k | 74.58% | 77.12ms | 57.64ms | 605.65ms | 95.96% | 79.88ms | 87.07ms | 87.25ms | 418.16ms |
bin/server_node_express | http://127.0.0.1:3000/user/0 | 0 | 32655 | 10752.71 | 5.98MB | 1.97MB | 1.37k | 509.70 | 2.83k | 65.83% | 137.85ms | 288.42ms | 1.88s | 91.58% | 62.64ms | 80.46ms | 273.76ms | 1.60s |
bin/server_node_polka | http://127.0.0.1:3000/ | 0 | 80198 | 26344.48 | 7.57MB | 2.49MB | 3.36k | 291.67 | 4.38k | 83.33% | 33.52ms | 22.55ms | 515.91ms | 98.36% | 35.97ms | 36.29ms | 39.38ms | 104.25ms |
bin/server_node_polka | http://127.0.0.1:3000/user | 0 | 71932 | 23796.6 | 6.79MB | 2.25MB | 3.01k | 344.96 | 4.40k | 76.25% | 37.88ms | 29.17ms | 532.21ms | 98.24% | 39.52ms | 41.15ms | 43.74ms | 172.88ms |
bin/server_node_polka | http://127.0.0.1:3000/user/0 | 0 | 68403 | 22459.84 | 8.42MB | 2.76MB | 2.86k | 337.86 | 4.41k | 74.58% | 42.05ms | 32.17ms | 517.47ms | 97.91% | 41.57ms | 43.47ms | 45.66ms | 216.97ms |
bin/server_python_flask | http://127.0.0.1:3000/ | 0 | 5019 | 1640.23 | 779.32KB | 254.68KB | 296.98 | 232.53 | 730.00 | 51.52% | 73.71ms | 132.26ms | 1.66s | 94.70% | 39.65ms | 44.08ms | 44.33ms | 650.97ms |
bin/server_python_flask | http://127.0.0.1:3000/user | 0 | 0 | 0.0 | 0.00B | 0.00B | 0.00 | 0.00 | 0.00 | -nan% | 0.00us | 0.00us | 0.00us | -nan% | 0.00us | 0.00us | 0.00us | 0.00us |
bin/server_python_flask | http://127.0.0.1:3000/user/0 | 0 | 2052 | 676.43 | 378.74KB | 124.85KB | 305.83 | 289.52 | 780.00 | 66.15% | 52.91ms | 27.04ms | 252.98ms | 93.57% | 45.99ms | 46.64ms | 48.66ms | 170.51ms |
bin/server_python_flask.py | http://127.0.0.1:3000/ | 0 | 4656 | 1523.24 | 722.95KB | 236.52KB | 323.16 | 197.56 | 720.00 | 60.74% | 78.34ms | 153.96ms | 1.67s | 94.08% | 38.81ms | 42.39ms | 50.68ms | 663.90ms |
bin/server_python_flask.py | http://127.0.0.1:3000/user | 0 | 0 | 0.0 | 0.00B | 0.00B | 0.00 | 0.00 | 0.00 | -nan% | 0.00us | 0.00us | 0.00us | -nan% | 0.00us | 0.00us | 0.00us | 0.00us |
bin/server_python_flask.py | http://127.0.0.1:3000/user/0 | 0 | 2449 | 791.16 | 452.01KB | 146.02KB | 307.96 | 214.29 | 810.00 | 60.26% | 47.12ms | 51.51ms | 269.44ms | 93.92% | 33.61ms | 37.98ms | 45.66ms | 264.68ms |
bin/server_python_japronto | http://127.0.0.1:3000/ | 0 | 6844 | 2256.23 | 1.04MB | 350.33KB | 440.20 | 284.84 | 0.93k | 42.76% | 44.10ms | 59.69ms | 866.34ms | 96.14% | 34.79ms | 35.90ms | 36.23ms | 498.85ms |
bin/server_python_japronto | http://127.0.0.1:3000/user | 0 | 6752 | 2204.97 | 1.02MB | 342.37KB | 376.70 | 210.06 | 0.89k | 66.29% | 56.17ms | 64.35ms | 691.47ms | 96.21% | 44.32ms | 44.50ms | 44.69ms | 448.25ms |
bin/server_python_japronto | http://127.0.0.1:3000/user/0 | 0 | 4811 | 1581.41 | 0.87MB | 291.88KB | 331.30 | 210.72 | 670.00 | 62.32% | 75.91ms | 134.53ms | 1.72s | 94.49% | 43.17ms | 46.13ms | 46.38ms | 647.41ms |
bin/server_python_sanic | http://127.0.0.1:3000/ | 0 | 5114 | 1688.7 | 794.07KB | 262.21KB | 393.91 | 277.21 | 820.00 | 60.16% | 70.48ms | 130.56ms | 1.67s | 94.88% | 40.22ms | 44.17ms | 44.71ms | 651.23ms |
bin/server_python_sanic | http://127.0.0.1:3000/user | 0 | 6547 | 2167.16 | 0.99MB | 336.50KB | 404.14 | 334.03 | 1.10k | 52.20% | 56.99ms | 104.31ms | 1.71s | 96.41% | 43.95ms | 44.25ms | 44.55ms | 648.81ms |
bin/server_python_sanic | http://127.0.0.1:3000/user/0 | 0 | 6073 | 2006.45 | 1.09MB | 370.33KB | 387.28 | 265.09 | 840.00 | 58.44% | 56.41ms | 69.04ms | 872.93ms | 94.48% | 42.87ms | 44.06ms | 44.34ms | 448.96ms |
bin/server_rust_iron | http://127.0.0.1:3000/ | 0 | 1196975 | 388443.74 | 85.61MB | 27.78MB | 50.16k | 32.46k | 113.62k | 56.67% | 287.52us | 220.44us | 17.80ms | 89.62% | 273.00us | 362.00us | 458.00us | 0.86ms |
bin/server_rust_iron | http://127.0.0.1:3000/user | 0 | 1109655 | 363892.18 | 79.37MB | 26.03MB | 61.98k | 36.05k | 117.28k | 42.78% | 268.12us | 292.06us | 16.19ms | 96.73% | 233.00us | 303.00us | 434.00us | 830.00us |
bin/server_rust_iron | http://127.0.0.1:3000/user/0 | 0 | 1024580 | 334222.24 | 128.00MB | 41.75MB | 49.09k | 32.47k | 110.40k | 48.57% | 357.47us | 1.26ms | 190.51ms | 99.78% | 334.00us | 433.00us | 539.00us | 1.04ms |
bin/server_rust_nickel | http://127.0.0.1:3000/ | 0 | 893737 | 292395.8 | 110.80MB | 36.25MB | 149.81k | 4.16k | 160.00k | 68.33% | 48.47us | 22.86us | 7.83ms | 78.07% | 45.00us | 56.00us | 77.00us | 86.00us |
bin/server_rust_nickel | http://127.0.0.1:3000/user | 0 | 1102315 | 360165.16 | 136.66MB | 44.65MB | 123.23k | 10.18k | 146.77k | 63.33% | 48.26us | 166.21us | 12.05ms | 99.75% | 40.00us | 48.00us | 56.00us | 75.00us |
bin/server_rust_nickel | http://127.0.0.1:3000/user/0 | 0 | 878587 | 289351.73 | 138.25MB | 45.53MB | 147.27k | 2.94k | 153.02k | 78.33% | 50.90us | 40.95us | 8.89ms | 98.21% | 42.00us | 54.00us | 83.00us | 94.00us |
bin/server_rust_rocket | http://127.0.0.1:3000/ | 0 | 1048101 | 342882.86 | 90.96MB | 29.76MB | 117.13k | 9.56k | 145.35k | 65.56% | 67.23us | 105.82us | 12.08ms | 99.81% | 59.00us | 75.00us | 108.00us | 147.00us |
bin/server_rust_rocket | http://127.0.0.1:3000/user | 0 | 821482 | 264981.46 | 71.29MB | 23.00MB | 133.25k | 8.53k | 143.80k | 80.65% | 79.49us | 98.68us | 12.00ms | 97.96% | 65.00us | 89.00us | 153.00us | 186.00us |
bin/server_rust_rocket | http://127.0.0.1:3000/user/0 | 0 | 1048155 | 344959.29 | 161.93MB | 53.29MB | 87.87k | 41.04k | 136.39k | 65.00% | 70.51us | 66.17us | 8.11ms | 98.69% | 63.00us | 89.00us | 113.00us | 140.00us |
Rankings
Ranking by Average Requests per second:
- 674992 req/sec : bin/server_cpp_evhtp
- 499186 req/sec : bin/server_go_fasthttprouter
- 362186 req/sec : bin/server_rust_iron
- 317607 req/sec : bin/server_rust_rocket
- 313970 req/sec : bin/server_rust_nickel
- 297073 req/sec : bin/server_go_iris
- 266941 req/sec : bin/server_go_echo
- 240521 req/sec : bin/server_go_gorilla_mux
- 216490 req/sec : bin/server_go_gin
- 194114 req/sec : bin/server_node_clusterpolka
- 129516 req/sec : bin/server_elixir_plug
- 119581 req/sec : bin/server_elixir_phoenix
- 99102 req/sec : bin/server_node_clusterexpress
- 63325 req/sec : bin/server_crystal_router_cr
- 60269 req/sec : bin/server_crystal_raze
- 52419 req/sec : bin/server_crystal_lucky
- 45268 req/sec : bin/server_crystal_kemal
- 24200 req/sec : bin/server_node_polka
- 11254 req/sec : bin/server_node_express
- 2014 req/sec : bin/server_python_japronto
- 1954 req/sec : bin/server_python_sanic
- 772 req/sec : bin/server_python_flask
- 771 req/sec : bin/server_python_flask.py
- -1 req/sec : bin/server_crystal_amber
- -1 req/sec : bin/server_python_django
from web-frameworks.
Got ruby installed on the server, that was painful, new results of everything I can compile so far (maybe install nim or dotnetcore next):
─➤ ../stats.exs -w 1 -d 3 _
Total Cores: 16
Concurrent Connections: 1000
Processing servers:
- bin/server_cpp_evhtp
- bin/server_crystal_amber
- bin/server_crystal_kemal
- bin/server_crystal_lucky
- bin/server_crystal_raze
- bin/server_crystal_router_cr
- bin/server_elixir_phoenix
- bin/server_elixir_plug
- bin/server_go_echo
- bin/server_go_fasthttprouter
- bin/server_go_gin
- bin/server_go_gorilla_mux
- bin/server_go_iris
- bin/server_node_clusterexpress
- bin/server_node_clusterpolka
- bin/server_node_express
- bin/server_node_polka
- bin/server_python_django
- bin/server_python_flask
- bin/server_python_flask.py
- bin/server_python_japronto
- bin/server_python_sanic
- bin/server_ruby_rack-routing
- bin/server_ruby_rails
- bin/server_ruby_roda
- bin/server_ruby_sinatra
- bin/server_rust_iron
- bin/server_rust_nickel
- bin/server_rust_rocket
Processing: bin/server_cpp_evhtp
Processing: bin/server_crystal_amber
unable to connect to 127.0.0.1:3000 Connection refused
unable to connect to 127.0.0.1:3000 Connection refused
unable to connect to 127.0.0.1:3000 Connection refused
unable to connect to 127.0.0.1:3000 Connection refused
-
-
- Test returned an unsuccessful error code, output of test of bin/server_crystal_amber:
-
unable to connect to 127.0.0.1:3000 Connection refused
-
-
- Test returned an unsuccessful error code, output of test of bin/server_crystal_amber:
-
unable to connect to 127.0.0.1:3000 Connection refused
-
-
- Test returned an unsuccessful error code, output of test of bin/server_crystal_amber:
-
Processing: bin/server_crystal_kemal
Processing: bin/server_crystal_lucky
Processing: bin/server_crystal_raze
Processing: bin/server_crystal_router_cr
Processing: bin/server_elixir_phoenix
Processing: bin/server_elixir_plug
Processing: bin/server_go_echo
Processing: bin/server_go_fasthttprouter
Processing: bin/server_go_gin
Processing: bin/server_go_gorilla_mux
Processing: bin/server_go_iris
Processing: bin/server_node_clusterexpress
Processing: bin/server_node_clusterpolka
Processing: bin/server_node_express
Processing: bin/server_node_polka
Processing: bin/server_python_django
Processing: bin/server_python_flask
Processing: bin/server_python_flask.py
Processing: bin/server_python_japronto
Processing: bin/server_python_sanic
Processing: bin/server_ruby_rack-routing
Processing: bin/server_ruby_rails
Processing: bin/server_ruby_roda
Processing: bin/server_ruby_sinatra
Processing: bin/server_rust_iron
Processing: bin/server_rust_nickel
Processing: bin/server_rust_rocket
Path | URL | Errors | Total Requests Count | Total Requests/s | Total Requests Throughput | Total Throughput/s | Req/s Avg | Req/s Stdev | Req/s Max | Req/s +/- | Latency Avg | Latency Stdev | Latency Max | Latency +/- | 50% | 75% | 90% | 99% |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
bin/server_cpp_evhtp | http://127.0.0.1:3000/ | 0 | 2150438 | 701268.12 | 131.25MB | 42.80MB | 89.82k | 25.81k | 125.77k | 62.92% | 2.08ms | 3.22ms | 204.16ms | 88.88% | 735.00us | 2.17ms | 5.80ms | 14.11ms |
bin/server_cpp_evhtp | http://127.0.0.1:3000/user | 0 | 2022355 | 665498.79 | 123.43MB | 40.62MB | 84.54k | 22.56k | 121.51k | 58.75% | 2.19ms | 3.36ms | 224.86ms | 88.71% | 781.00us | 2.44ms | 6.02ms | 13.98ms |
bin/server_cpp_evhtp | http://127.0.0.1:3000/user/0 | 0 | 2024720 | 657706.33 | 181.51MB | 58.96MB | 84.59k | 24.29k | 123.06k | 60.00% | 2.16ms | 3.02ms | 33.88ms | 87.72% | 774.00us | 2.41ms | 6.01ms | 13.79ms |
bin/server_crystal_kemal | http://127.0.0.1:3000/ | 0 | 174424 | 57064.68 | 17.97MB | 5.88MB | 7.30k | 391.74 | 8.02k | 70.00% | 17.13ms | 4.13ms | 30.78ms | 71.59% | 14.42ms | 21.39ms | 21.96ms | 28.28ms |
bin/server_crystal_kemal | http://127.0.0.1:3000/user | 0 | 123936 | 40772.89 | 12.77MB | 4.20MB | 5.19k | 405.87 | 6.31k | 72.92% | 24.15ms | 4.12ms | 33.28ms | 73.85% | 24.93ms | 25.70ms | 28.05ms | 32.35ms |
bin/server_crystal_kemal | http://127.0.0.1:3000/user/0 | 0 | 107274 | 35244.97 | 14.12MB | 4.64MB | 4.49k | 529.62 | 5.90k | 71.67% | 26.72ms | 3.73ms | 229.23ms | 84.88% | 26.71ms | 27.91ms | 31.20ms | 34.65ms |
bin/server_crystal_lucky | http://127.0.0.1:3000/ | 0 | 159862 | 52604.44 | 11.89MB | 3.91MB | 6.69k | 321.12 | 7.51k | 68.33% | 18.71ms | 3.26ms | 28.42ms | 70.60% | 20.04ms | 20.47ms | 20.85ms | 25.36ms |
bin/server_crystal_lucky | http://127.0.0.1:3000/user | 0 | 159321 | 52690.57 | 11.85MB | 3.92MB | 6.67k | 638.47 | 7.59k | 76.67% | 18.52ms | 4.47ms | 33.06ms | 63.41% | 21.07ms | 21.85ms | 22.73ms | 28.74ms |
bin/server_crystal_lucky | http://127.0.0.1:3000/user/0 | 0 | 166283 | 54647.57 | 18.71MB | 6.15MB | 6.96k | 800.52 | 8.71k | 84.17% | 17.34ms | 4.48ms | 49.51ms | 63.31% | 14.32ms | 21.81ms | 22.31ms | 23.92ms |
bin/server_crystal_raze | http://127.0.0.1:3000/ | 0 | 245459 | 80589.26 | 14.51MB | 4.77MB | 10.28k | 1.54k | 15.05k | 74.58% | 12.79ms | 20.89ms | 437.44ms | 98.73% | 10.85ms | 11.12ms | 15.40ms | 86.09ms |
bin/server_crystal_raze | http://127.0.0.1:3000/user | 0 | 196574 | 64995.58 | 11.62MB | 3.84MB | 8.23k | 627.94 | 10.10k | 71.67% | 15.02ms | 3.75ms | 29.94ms | 70.86% | 12.72ms | 18.99ms | 19.68ms | 25.68ms |
bin/server_crystal_raze | http://127.0.0.1:3000/user/0 | 0 | 178817 | 58530.4 | 15.69MB | 5.14MB | 7.48k | 491.94 | 8.60k | 81.25% | 16.61ms | 3.79ms | 217.21ms | 74.27% | 14.03ms | 20.41ms | 20.84ms | 25.87ms |
bin/server_crystal_router_cr | http://127.0.0.1:3000/ | 0 | 214170 | 69880.49 | 12.66MB | 4.13MB | 8.97k | 638.21 | 10.12k | 67.50% | 13.77ms | 3.42ms | 26.19ms | 75.17% | 11.56ms | 17.06ms | 17.71ms | 23.51ms |
bin/server_crystal_router_cr | http://127.0.0.1:3000/user | 0 | 189137 | 62372.48 | 11.18MB | 3.69MB | 7.91k | 521.88 | 8.84k | 64.17% | 15.68ms | 3.84ms | 27.21ms | 77.72% | 15.41ms | 18.58ms | 19.47ms | 25.89ms |
bin/server_crystal_router_cr | http://127.0.0.1:3000/user/0 | 0 | 185561 | 60660.85 | 16.28MB | 5.32MB | 7.77k | 654.61 | 9.53k | 74.58% | 16.13ms | 4.06ms | 30.51ms | 83.53% | 13.72ms | 19.37ms | 21.21ms | 26.71ms |
bin/server_elixir_phoenix | http://127.0.0.1:3000/ | 0 | 387251 | 125977.69 | 52.81MB | 17.18MB | 16.17k | 2.78k | 24.33k | 70.00% | 8.31ms | 13.51ms | 228.69ms | 96.23% | 7.43ms | 11.95ms | 16.78ms | 31.79ms |
bin/server_elixir_phoenix | http://127.0.0.1:3000/user | 0 | 345152 | 113310.71 | 47.07MB | 15.45MB | 14.39k | 2.79k | 22.91k | 70.83% | 9.68ms | 15.22ms | 255.40ms | 95.83% | 8.79ms | 13.97ms | 19.62ms | 39.35ms |
bin/server_elixir_phoenix | http://127.0.0.1:3000/user/0 | 0 | 366605 | 119910.54 | 60.48MB | 19.78MB | 15.29k | 3.16k | 23.24k | 65.83% | 9.12ms | 12.32ms | 223.28ms | 91.55% | 8.38ms | 14.08ms | 20.28ms | 37.55ms |
bin/server_elixir_plug | http://127.0.0.1:3000/ | 0 | 415890 | 135559.88 | 56.72MB | 18.49MB | 17.38k | 2.59k | 26.91k | 69.17% | 8.01ms | 14.09ms | 231.23ms | 97.82% | 7.29ms | 11.17ms | 15.27ms | 30.32ms |
bin/server_elixir_plug | http://127.0.0.1:3000/user | 0 | 393048 | 129101.77 | 53.60MB | 17.61MB | 16.39k | 3.04k | 24.95k | 66.25% | 8.58ms | 13.86ms | 234.07ms | 96.22% | 7.87ms | 12.40ms | 17.39ms | 33.29ms |
bin/server_elixir_plug | http://127.0.0.1:3000/user/0 | 0 | 386573 | 126067.29 | 63.78MB | 20.80MB | 16.15k | 2.44k | 24.81k | 70.42% | 8.58ms | 14.72ms | 230.12ms | 97.64% | 7.71ms | 11.76ms | 16.19ms | 34.02ms |
bin/server_go_echo | http://127.0.0.1:3000/ | 0 | 819753 | 266484.08 | 90.69MB | 29.48MB | 34.09k | 5.13k | 55.28k | 72.50% | 3.65ms | 7.97ms | 211.42ms | 98.39% | 2.48ms | 4.45ms | 6.48ms | 13.50ms |
bin/server_go_echo | http://127.0.0.1:3000/user | 0 | 806354 | 264289.2 | 89.20MB | 29.24MB | 33.53k | 5.64k | 51.81k | 68.33% | 3.83ms | 6.56ms | 209.56ms | 95.20% | 2.48ms | 4.81ms | 7.59ms | 18.45ms |
bin/server_go_echo | http://127.0.0.1:3000/user/0 | 0 | 784785 | 256532.33 | 109.27MB | 35.72MB | 32.69k | 5.96k | 56.14k | 70.42% | 3.95ms | 10.02ms | 218.39ms | 98.81% | 2.59ms | 4.50ms | 6.54ms | 15.42ms |
bin/server_go_fasthttprouter | http://127.0.0.1:3000/ | 0 | 1590748 | 521486.11 | 141.09MB | 46.25MB | 66.34k | 14.89k | 112.45k | 68.75% | 1.83ms | 4.60ms | 206.27ms | 98.05% | 1.18ms | 2.01ms | 3.45ms | 7.76ms |
bin/server_go_fasthttprouter | http://127.0.0.1:3000/user | 0 | 1535587 | 502235.48 | 136.19MB | 44.54MB | 64.01k | 16.50k | 112.84k | 70.42% | 1.79ms | 2.65ms | 207.80ms | 93.55% | 1.19ms | 2.05ms | 3.53ms | 8.56ms |
bin/server_go_fasthttprouter | http://127.0.0.1:3000/user/0 | 0 | 1446834 | 468614.3 | 226.29MB | 73.29MB | 60.22k | 13.24k | 100.26k | 68.75% | 2.38ms | 8.27ms | 209.48ms | 99.07% | 1.26ms | 2.29ms | 4.12ms | 10.21ms |
bin/server_go_gin | http://127.0.0.1:3000/ | 0 | 673637 | 219038.81 | 74.52MB | 24.23MB | 28.02k | 4.26k | 42.19k | 70.00% | 4.64ms | 9.17ms | 211.32ms | 97.56% | 3.36ms | 5.40ms | 7.79ms | 21.92ms |
bin/server_go_gin | http://127.0.0.1:3000/user | 0 | 671020 | 220171.58 | 74.23MB | 24.36MB | 27.92k | 4.11k | 41.87k | 70.42% | 4.87ms | 7.22ms | 208.39ms | 93.73% | 3.33ms | 5.72ms | 9.33ms | 26.79ms |
bin/server_go_gin | http://127.0.0.1:3000/user/0 | 0 | 658136 | 212774.09 | 91.64MB | 29.63MB | 27.39k | 3.69k | 44.81k | 71.25% | 5.33ms | 12.78ms | 223.69ms | 97.44% | 3.29ms | 5.62ms | 8.58ms | 34.28ms |
bin/server_go_gorilla_mux | http://127.0.0.1:3000/ | 0 | 777970 | 251781.55 | 86.06MB | 27.85MB | 32.34k | 4.30k | 51.90k | 72.50% | 3.74ms | 7.44ms | 218.43ms | 98.51% | 2.75ms | 4.61ms | 6.53ms | 12.85ms |
bin/server_go_gorilla_mux | http://127.0.0.1:3000/user | 0 | 733382 | 240740.11 | 81.13MB | 26.63MB | 30.56k | 4.39k | 44.65k | 66.67% | 4.48ms | 8.69ms | 213.08ms | 96.39% | 2.91ms | 5.18ms | 8.15ms | 23.08ms |
bin/server_go_gorilla_mux | http://127.0.0.1:3000/user/0 | 0 | 670485 | 216890.61 | 93.36MB | 30.20MB | 27.90k | 3.60k | 41.26k | 70.83% | 4.57ms | 8.29ms | 211.28ms | 97.80% | 3.39ms | 5.47ms | 7.80ms | 18.62ms |
bin/server_go_iris | http://127.0.0.1:3000/ | 0 | 923117 | 299800.33 | 102.12MB | 33.17MB | 38.39k | 6.15k | 66.44k | 68.33% | 3.23ms | 7.16ms | 213.09ms | 98.30% | 2.25ms | 3.79ms | 5.87ms | 12.48ms |
bin/server_go_iris | http://127.0.0.1:3000/user | 0 | 911694 | 295327.21 | 100.86MB | 32.67MB | 37.95k | 7.42k | 76.86k | 73.75% | 3.71ms | 10.40ms | 222.07ms | 98.58% | 2.19ms | 3.99ms | 6.38ms | 16.62ms |
bin/server_go_iris | http://127.0.0.1:3000/user/0 | 0 | 883202 | 285004.82 | 122.97MB | 39.68MB | 36.68k | 6.03k | 59.39k | 70.42% | 3.47ms | 8.27ms | 211.34ms | 98.70% | 2.35ms | 4.02ms | 6.22ms | 13.00ms |
bin/server_node_clusterexpress | http://127.0.0.1:3000/ | 0 | 315231 | 102189.47 | 48.70MB | 15.79MB | 13.14k | 2.40k | 17.94k | 53.33% | 8.77ms | 5.86ms | 242.61ms | 87.17% | 7.66ms | 9.86ms | 15.24ms | 27.82ms |
bin/server_node_clusterexpress | http://127.0.0.1:3000/user | 0 | 316233 | 102278.95 | 48.86MB | 15.80MB | 13.11k | 2.21k | 17.41k | 58.33% | 9.61ms | 7.93ms | 215.18ms | 94.38% | 7.78ms | 11.25ms | 15.55ms | 36.86ms |
bin/server_node_clusterexpress | http://127.0.0.1:3000/user/0 | 0 | 294103 | 95016.88 | 53.57MB | 17.31MB | 12.21k | 1.29k | 19.85k | 73.33% | 9.63ms | 7.01ms | 222.13ms | 93.85% | 7.77ms | 11.02ms | 15.44ms | 39.77ms |
bin/server_node_clusterpolka | http://127.0.0.1:3000/ | 0 | 641541 | 207799.62 | 60.57MB | 19.62MB | 26.69k | 9.72k | 56.71k | 60.83% | 4.50ms | 3.85ms | 77.51ms | 88.27% | 3.36ms | 6.41ms | 7.82ms | 18.87ms |
bin/server_node_clusterpolka | http://127.0.0.1:3000/user | 0 | 592641 | 192904.18 | 55.95MB | 18.21MB | 24.64k | 7.51k | 48.78k | 61.25% | 4.77ms | 3.77ms | 73.73ms | 86.69% | 3.61ms | 6.74ms | 7.83ms | 18.79ms |
bin/server_node_clusterpolka | http://127.0.0.1:3000/user/0 | 0 | 568042 | 183849.2 | 69.88MB | 22.62MB | 23.59k | 7.62k | 52.13k | 71.67% | 5.17ms | 4.83ms | 211.61ms | 92.01% | 3.89ms | 7.03ms | 7.93ms | 22.20ms |
bin/server_node_express | http://127.0.0.1:3000/ | 0 | 34824 | 11368.02 | 5.38MB | 1.76MB | 1.46k | 315.26 | 2.45k | 67.92% | 75.40ms | 53.07ms | 618.53ms | 96.74% | 77.42ms | 80.94ms | 84.32ms | 351.65ms |
bin/server_node_express | http://127.0.0.1:3000/user | 0 | 35709 | 11519.18 | 5.52MB | 1.78MB | 1.72k | 1.36k | 6.77k | 81.25% | 138.87ms | 315.98ms | 1.93s | 91.15% | 51.46ms | 67.02ms | 336.46ms | 1.75s |
bin/server_node_express | http://127.0.0.1:3000/user/0 | 0 | 31448 | 10345.93 | 5.76MB | 1.89MB | 1.32k | 194.24 | 1.88k | 71.25% | 101.83ms | 139.58ms | 1.12s | 94.62% | 70.01ms | 98.53ms | 125.59ms | 915.86ms |
bin/server_node_polka | http://127.0.0.1:3000/ | 0 | 79568 | 26111.15 | 7.51MB | 2.47MB | 3.33k | 385.37 | 4.65k | 73.33% | 35.11ms | 34.01ms | 559.66ms | 98.06% | 36.11ms | 36.73ms | 39.13ms | 194.45ms |
bin/server_node_polka | http://127.0.0.1:3000/user | 0 | 71975 | 23774.86 | 6.80MB | 2.24MB | 3.01k | 758.06 | 4.38k | 54.58% | 30.57ms | 16.64ms | 270.98ms | 98.49% | 31.78ms | 32.02ms | 35.05ms | 62.21ms |
bin/server_node_polka | http://127.0.0.1:3000/user/0 | 0 | 67353 | 22130.48 | 8.29MB | 2.72MB | 2.82k | 402.19 | 4.20k | 76.67% | 43.27ms | 40.25ms | 549.51ms | 97.62% | 42.21ms | 43.05ms | 45.83ms | 266.18ms |
bin/server_python_django | http://127.0.0.1:3000/ | 2010 | 2010 | 664.24 | 478.95KB | 158.27KB | 189.20 | 195.59 | 670.00 | 86.67% | 139.27ms | 94.63ms | 1.81s | 87.41% | 150.44ms | 151.90ms | 153.00ms | 595.36ms |
bin/server_python_django | http://127.0.0.1:3000/user | 2221 | 2221 | 738.31 | 529.22KB | 175.93KB | 104.17 | 79.52 | 292.00 | 64.59% | 152.15ms | 83.42ms | 1.82s | 93.20% | 160.20ms | 161.63ms | 162.55ms | 554.08ms |
bin/server_python_django | http://127.0.0.1:3000/user/0 | 1845 | 1845 | 605.79 | 439.63KB | 144.35KB | 92.91 | 58.23 | 300.00 | 71.35% | 186.12ms | 157.64ms | 1.82s | 91.33% | 155.69ms | 157.44ms | 314.84ms | 654.22ms |
bin/server_python_flask | http://127.0.0.1:3000/ | 2468 | 2468 | 816.73 | 588.08KB | 194.61KB | 109.42 | 110.84 | 460.00 | 83.04% | 130.61ms | 51.80ms | 1.82s | 94.25% | 151.04ms | 152.52ms | 158.50ms | 164.48ms |
bin/server_python_flask | http://127.0.0.1:3000/user | 2232 | 2232 | 741.97 | 531.84KB | 176.80KB | 101.99 | 76.39 | 270.00 | 55.56% | 132.39ms | 43.37ms | 534.04ms | 93.64% | 127.66ms | 129.02ms | 129.67ms | 306.36ms |
bin/server_python_flask | http://127.0.0.1:3000/user/0 | 2222 | 2222 | 730.78 | 529.46KB | 174.13KB | 99.60 | 70.48 | 350.00 | 74.77% | 145.79ms | 66.56ms | 565.34ms | 93.65% | 157.63ms | 158.14ms | 159.15ms | 365.25ms |
bin/server_python_flask.py | http://127.0.0.1:3000/ | 0 | 6002 | 1980.39 | 0.88MB | 295.90KB | 355.43 | 302.32 | 1.07k | 68.94% | 65.66ms | 102.82ms | 1.67s | 95.45% | 45.85ms | 46.00ms | 46.21ms | 649.89ms |
bin/server_python_flask.py | http://127.0.0.1:3000/user | 0 | 0 | 0.0 | 0.00B | 0.00B | 0.00 | 0.00 | 0.00 | -nan% | 0.00us | 0.00us | 0.00us | -nan% | 0.00us | 0.00us | 0.00us | 0.00us |
bin/server_python_flask.py | http://127.0.0.1:3000/user/0 | 0 | 2954 | 956.44 | 527.91KB | 170.93KB | 234.04 | 152.72 | 514.00 | 56.52% | 87.98ms | 147.71ms | 1.66s | 90.01% | 42.22ms | 44.87ms | 154.57ms | 650.11ms |
bin/server_python_japronto | http://127.0.0.1:3000/ | 0 | 338028 | 110124.74 | 25.47MB | 8.30MB | 15.16k | 1.99k | 31.18k | 96.43% | 8.27ms | 0.99ms | 14.23ms | 94.58% | 8.42ms | 8.54ms | 8.73ms | 9.23ms |
bin/server_python_japronto | http://127.0.0.1:3000/user | 0 | 345647 | 114016.07 | 26.04MB | 8.59MB | 14.47k | 0.89k | 18.09k | 83.33% | 8.69ms | 9.31ms | 225.75ms | 99.48% | 8.65ms | 8.79ms | 8.92ms | 9.38ms |
bin/server_python_japronto | http://127.0.0.1:3000/user/0 | 0 | 305102 | 99527.03 | 31.72MB | 10.35MB | 12.78k | 309.91 | 14.37k | 86.25% | 9.81ms | 349.89us | 24.12ms | 95.69% | 9.78ms | 9.90ms | 10.03ms | 10.39ms |
bin/server_python_sanic | http://127.0.0.1:3000/ | 0 | 567418 | 183219.45 | 64.39MB | 20.79MB | 26.51k | 9.87k | 56.70k | 62.15% | 5.86ms | 6.68ms | 65.32ms | 87.91% | 3.64ms | 7.83ms | 14.01ms | 32.29ms |
bin/server_python_sanic | http://127.0.0.1:3000/user | 0 | 510266 | 164997.56 | 57.91MB | 18.73MB | 23.97k | 8.55k | 53.30k | 70.42% | 6.24ms | 6.54ms | 45.73ms | 84.60% | 3.81ms | 9.88ms | 15.63ms | 26.54ms |
bin/server_python_sanic | http://127.0.0.1:3000/user/0 | 0 | 536255 | 173306.94 | 76.20MB | 24.63MB | 25.55k | 10.34k | 98.54k | 75.71% | 6.16ms | 7.05ms | 73.26ms | 85.78% | 3.71ms | 9.01ms | 15.53ms | 31.60ms |
bin/server_ruby_rack-routing | http://127.0.0.1:3000/ | 0 | 15581 | 5106.83 | 578.20KB | 189.51KB | 652.08 | 225.59 | 2.39k | 73.75% | 3.07ms | 5.15ms | 63.66ms | 87.86% | 229.00us | 4.11ms | 9.35ms | 23.83ms |
bin/server_ruby_rack-routing | http://127.0.0.1:3000/user | 0 | 13187 | 4354.85 | 489.36KB | 161.61KB | 630.70 | 247.72 | 1.57k | 71.90% | 3.63ms | 6.15ms | 105.00ms | 87.94% | 272.00us | 4.71ms | 11.11ms | 27.36ms |
bin/server_ruby_rack-routing | http://127.0.0.1:3000/user/0 | 0 | 12674 | 4154.56 | 841.63KB | 275.89KB | 530.33 | 167.57 | 1.05k | 70.00% | 3.78ms | 5.12ms | 44.63ms | 86.11% | 1.66ms | 5.61ms | 10.39ms | 23.01ms |
bin/server_ruby_rails | http://127.0.0.1:3000/ | 0 | 1892 | 617.14 | 323.34KB | 105.47KB | 126.52 | 9.01 | 141.00 | 82.00% | 7.92ms | 0.99ms | 20.96ms | 82.45% | 7.83ms | 8.19ms | 8.88ms | 10.83ms |
bin/server_ruby_rails | http://127.0.0.1:3000/user | 0 | 1909 | 626.2 | 326.25KB | 107.02KB | 127.67 | 8.00 | 141.00 | 78.00% | 7.85ms | 0.87ms | 19.07ms | 80.20% | 7.74ms | 8.18ms | 8.78ms | 10.16ms |
bin/server_ruby_rails | http://127.0.0.1:3000/user/0 | 0 | 1645 | 538.94 | 477.11KB | 156.31KB | 110.07 | 8.45 | 121.00 | 54.00% | 9.11ms | 1.10ms | 24.68ms | 86.81% | 8.94ms | 9.36ms | 10.16ms | 11.61ms |
bin/server_ruby_roda | http://127.0.0.1:3000/ | 0 | 18971 | 6182.04 | 1.14MB | 380.34KB | 794.31 | 410.49 | 2.98k | 70.00% | 2.53ms | 3.55ms | 45.61ms | 87.40% | 1.00ms | 3.53ms | 6.95ms | 15.96ms |
bin/server_ruby_roda | http://127.0.0.1:3000/user | 0 | 17480 | 5764.35 | 1.05MB | 354.64KB | 836.16 | 378.59 | 1.95k | 59.52% | 2.74ms | 3.80ms | 57.23ms | 86.70% | 1.08ms | 4.01ms | 7.66ms | 16.97ms |
bin/server_ruby_roda | http://127.0.0.1:3000/user/0 | 0 | 15825 | 5176.58 | 1.40MB | 470.14KB | 662.17 | 216.84 | 1.28k | 71.67% | 3.03ms | 3.22ms | 44.14ms | 86.21% | 2.13ms | 4.37ms | 7.28ms | 14.58ms |
bin/server_ruby_sinatra | http://127.0.0.1:3000/ | 0 | 6614 | 2155.96 | 1.08MB | 362.13KB | 276.70 | 113.62 | 630.00 | 64.58% | 7.23ms | 10.12ms | 99.04ms | 87.30% | 2.93ms | 10.27ms | 20.08ms | 45.16ms |
bin/server_ruby_sinatra | http://127.0.0.1:3000/user | 0 | 6158 | 2025.38 | 1.01MB | 340.20KB | 257.51 | 131.19 | 700.00 | 70.00% | 7.74ms | 10.93ms | 106.87ms | 87.24% | 3.07ms | 11.22ms | 21.34ms | 50.10ms |
bin/server_ruby_sinatra | http://127.0.0.1:3000/user/0 | 0 | 5742 | 1874.34 | 1.11MB | 369.74KB | 240.25 | 98.25 | 570.00 | 68.33% | 8.33ms | 10.14ms | 89.79ms | 86.69% | 4.72ms | 12.15ms | 21.62ms | 45.22ms |
bin/server_rust_iron | http://127.0.0.1:3000/ | 0 | 1194963 | 389680.23 | 85.47MB | 27.87MB | 57.21k | 36.04k | 111.32k | 46.19% | 261.35us | 218.87us | 12.48ms | 94.12% | 228.00us | 327.00us | 409.00us | 783.00us |
bin/server_rust_iron | http://127.0.0.1:3000/user | 0 | 1162395 | 379615.81 | 83.14MB | 27.15MB | 64.95k | 32.42k | 115.22k | 65.56% | 274.64us | 310.17us | 17.95ms | 96.17% | 233.00us | 338.00us | 447.00us | 0.88ms |
bin/server_rust_iron | http://127.0.0.1:3000/user/0 | 0 | 1033462 | 337621.79 | 129.11MB | 42.18MB | 57.74k | 38.63k | 114.12k | 45.56% | 305.27us | 407.82us | 59.30ms | 97.04% | 247.00us | 374.00us | 492.00us | 1.02ms |
bin/server_rust_nickel | http://127.0.0.1:3000/ | 0 | 897908 | 296861.67 | 111.32MB | 36.80MB | 150.51k | 4.86k | 169.14k | 81.67% | 47.12us | 27.40us | 8.02ms | 82.55% | 38.00us | 49.00us | 88.00us | 98.00us |
bin/server_rust_nickel | http://127.0.0.1:3000/user | 0 | 780844 | 258500.35 | 96.81MB | 32.05MB | 130.82k | 6.35k | 142.88k | 70.00% | 56.78us | 80.69us | 7.92ms | 99.89% | 59.00us | 69.00us | 78.00us | 93.00us |
bin/server_rust_nickel | http://127.0.0.1:3000/user/0 | 0 | 871718 | 284436.61 | 137.17MB | 44.76MB | 146.17k | 4.00k | 161.84k | 81.67% | 49.32us | 41.81us | 11.86ms | 90.70% | 39.00us | 52.00us | 91.00us | 102.00us |
bin/server_rust_rocket | http://127.0.0.1:3000/ | 0 | 843192 | 276591.06 | 73.18MB | 24.00MB | 94.23k | 46.20k | 143.93k | 62.22% | 76.36us | 110.25us | 8.15ms | 97.94% | 61.00us | 88.00us | 130.00us | 200.00us |
bin/server_rust_rocket | http://127.0.0.1:3000/user | 0 | 981432 | 324412.45 | 85.17MB | 28.15MB | 109.70k | 20.77k | 142.03k | 64.44% | 74.96us | 166.54us | 12.12ms | 99.57% | 58.00us | 74.00us | 121.00us | 185.00us |
bin/server_rust_rocket | http://127.0.0.1:3000/user/0 | 0 | 989935 | 325112.38 | 152.94MB | 50.23MB | 110.64k | 25.59k | 149.79k | 48.89% | 79.88us | 227.28us | 11.99ms | 99.29% | 63.00us | 79.00us | 94.00us | 209.00us |
Rankings
Ranking by Average Requests per second:
- 674824 req/sec : bin/server_cpp_evhtp
- 497445 req/sec : bin/server_go_fasthttprouter
- 368972 req/sec : bin/server_rust_iron
- 308705 req/sec : bin/server_rust_rocket
- 293377 req/sec : bin/server_go_iris
- 279932 req/sec : bin/server_rust_nickel
- 262435 req/sec : bin/server_go_echo
- 236470 req/sec : bin/server_go_gorilla_mux
- 217328 req/sec : bin/server_go_gin
- 194851 req/sec : bin/server_node_clusterpolka
- 173841 req/sec : bin/server_python_sanic
- 130242 req/sec : bin/server_elixir_plug
- 119732 req/sec : bin/server_elixir_phoenix
- 107889 req/sec : bin/server_python_japronto
- 99828 req/sec : bin/server_node_clusterexpress
- 68038 req/sec : bin/server_crystal_raze
- 64304 req/sec : bin/server_crystal_router_cr
- 53314 req/sec : bin/server_crystal_lucky
- 44360 req/sec : bin/server_crystal_kemal
- 24005 req/sec : bin/server_node_polka
- 11077 req/sec : bin/server_node_express
- 5707 req/sec : bin/server_ruby_roda
- 4538 req/sec : bin/server_ruby_rack-routing
- 2018 req/sec : bin/server_ruby_sinatra
- 978 req/sec : bin/server_python_flask.py
- 763 req/sec : bin/server_python_flask
- 669 req/sec : bin/server_python_django
- 594 req/sec : bin/server_ruby_rails
- -1 req/sec : bin/server_crystal_amber
from web-frameworks.
For note, amber fails to run because of:
╰─➤ bin/server_crystal_amber
Environment file not found for ./config/environments/production (Amber::Exceptions::Environment)
from ???
from crystal/amber/lib/amber/src/amber.cr:24:3 in '__crystal_main'
from /usr/share/crystal/src/crystal/main.cr:0:3 in 'main'
from __libc_start_main
from _start
from ???
I'm guessing this is a bug in this server and it should be corrected (pathing maybe?).
from web-frameworks.
Still awaiting some Nim results ;)
Here is a quick link for you: https://nim-lang.org/install_unix.html. If you're using a package manager, be sure to verify you got at least nim v0.18.0.
from web-frameworks.
@dom96 Oh hey, thanks, you've spurred me on to go ahead and install nim then. ^.^
Running the tests on all servers, this will take a while to run after I install nim, will post results when complete. :-)
from web-frameworks.
Also decided to install dotnet too, and wow that csharp server was a pain to get running, dependency after dependency after dependency that it does not acquire itself and just assumes (you know what they say about assuming ;-) ) that they are all installed globally. Doesn't dotnetcore have a dependency management system like decent languages? o.O
Tests are finally running now, will post when complete...
from web-frameworks.
Wow! Initial tests show that nim is fast, like whupping everything but C++ itself, I'm curious to see how everything will fair when the final results come in!
from web-frameworks.
Oy, well one of the nim frameworks is super fast, the other is abysmally slow, and I'm surprised just how poor dotnet is doing considering it is a JIT'd language (it's even beat by Elixir, which is a bytecode interpreted language!), probably just a really poorly made framework:
╰─➤ ../stats.exs -w 1 -d 3 _
Total Cores: 16
Concurrent Connections: 1000
Processing servers:
- bin/server_cpp_evhtp
- bin/server_crystal_amber
- bin/server_crystal_kemal
- bin/server_crystal_lucky
- bin/server_crystal_raze
- bin/server_crystal_router_cr
- bin/server_csharp_aspnetcore
- bin/server_elixir_phoenix
- bin/server_elixir_plug
- bin/server_go_echo
- bin/server_go_fasthttprouter
- bin/server_go_gin
- bin/server_go_gorilla_mux
- bin/server_go_iris
- bin/server_nim_jester
- bin/server_nim_mofuw
- bin/server_node_clusterexpress
- bin/server_node_clusterpolka
- bin/server_node_express
- bin/server_node_polka
- bin/server_python_django
- bin/server_python_flask
- bin/server_python_flask.py
- bin/server_python_japronto
- bin/server_python_sanic
- bin/server_ruby_rack-routing
- bin/server_ruby_rails
- bin/server_ruby_roda
- bin/server_ruby_sinatra
- bin/server_rust_iron
- bin/server_rust_nickel
- bin/server_rust_rocket
Processing: bin/server_cpp_evhtp
Processing: bin/server_crystal_amber
unable to connect to 127.0.0.1:3000 Connection refused
unable to connect to 127.0.0.1:3000 Connection refused
unable to connect to 127.0.0.1:3000 Connection refused
unable to connect to 127.0.0.1:3000 Connection refused
-
-
- Test returned an unsuccessful error code, output of test of bin/server_crystal_amber:
-
unable to connect to 127.0.0.1:3000 Connection refused
-
-
- Test returned an unsuccessful error code, output of test of bin/server_crystal_amber:
-
unable to connect to 127.0.0.1:3000 Connection refused
-
-
- Test returned an unsuccessful error code, output of test of bin/server_crystal_amber:
-
Processing: bin/server_crystal_kemal
Processing: bin/server_crystal_lucky
Processing: bin/server_crystal_raze
Processing: bin/server_crystal_router_cr
Processing: bin/server_csharp_aspnetcore
Processing: bin/server_elixir_phoenix
Processing: bin/server_elixir_plug
Processing: bin/server_go_echo
Processing: bin/server_go_fasthttprouter
Processing: bin/server_go_gin
Processing: bin/server_go_gorilla_mux
Processing: bin/server_go_iris
Processing: bin/server_nim_jester
Processing: bin/server_nim_mofuw
Processing: bin/server_node_clusterexpress
Processing: bin/server_node_clusterpolka
Processing: bin/server_node_express
Processing: bin/server_node_polka
Processing: bin/server_python_django
Processing: bin/server_python_flask
Processing: bin/server_python_flask.py
Processing: bin/server_python_japronto
Processing: bin/server_python_sanic
Processing: bin/server_ruby_rack-routing
Processing: bin/server_ruby_rails
Processing: bin/server_ruby_roda
Processing: bin/server_ruby_sinatra
Processing: bin/server_rust_iron
Processing: bin/server_rust_nickel
Processing: bin/server_rust_rocket
Path | URL | Errors | Total Requests Count | Total Requests/s | Total Requests Throughput | Total Throughput/s | Req/s Avg | Req/s Stdev | Req/s Max | Req/s +/- | Latency Avg | Latency Stdev | Latency Max | Latency +/- | 50% | 75% | 90% | 99% |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
bin/server_cpp_evhtp | http://127.0.0.1:3000/ | 0 | 2156132 | 705937.67 | 131.60MB | 43.09MB | 90.19k | 27.93k | 127.42k | 65.83% | 2.27ms | 3.58ms | 205.00ms | 88.00% | 737.00us | 2.23ms | 6.91ms | 15.64ms |
bin/server_cpp_evhtp | http://127.0.0.1:3000/user | 0 | 2045693 | 672015.9 | 124.86MB | 41.02MB | 85.52k | 23.76k | 127.92k | 57.50% | 2.12ms | 3.21ms | 216.46ms | 88.70% | 751.00us | 2.40ms | 5.81ms | 13.83ms |
bin/server_cpp_evhtp | http://127.0.0.1:3000/user/0 | 0 | 2029523 | 663386.33 | 181.94MB | 59.47MB | 84.87k | 22.85k | 121.17k | 57.50% | 2.10ms | 3.09ms | 204.78ms | 88.46% | 749.00us | 2.29ms | 5.80ms | 14.08ms |
bin/server_crystal_kemal | http://127.0.0.1:3000/ | 0 | 180744 | 59355.88 | 18.62MB | 6.11MB | 7.57k | 743.38 | 8.70k | 80.42% | 16.65ms | 4.70ms | 59.28ms | 88.20% | 13.89ms | 20.80ms | 21.63ms | 29.21ms |
bin/server_crystal_kemal | http://127.0.0.1:3000/user | 0 | 141240 | 46747.22 | 14.55MB | 4.81MB | 5.91k | 0.88k | 8.71k | 77.08% | 20.20ms | 8.01ms | 227.16ms | 94.81% | 20.71ms | 24.05ms | 24.57ms | 31.00ms |
bin/server_crystal_kemal | http://127.0.0.1:3000/user/0 | 0 | 121486 | 39714.25 | 15.99MB | 5.23MB | 5.08k | 631.49 | 6.71k | 73.75% | 23.51ms | 6.13ms | 230.42ms | 75.21% | 25.36ms | 26.08ms | 27.92ms | 33.63ms |
bin/server_crystal_lucky | http://127.0.0.1:3000/ | 0 | 176189 | 57726.06 | 13.11MB | 4.29MB | 7.37k | 578.14 | 8.81k | 74.17% | 16.46ms | 3.95ms | 30.37ms | 65.87% | 15.09ms | 20.01ms | 20.84ms | 26.10ms |
bin/server_crystal_lucky | http://127.0.0.1:3000/user | 0 | 149844 | 49541.12 | 11.15MB | 3.69MB | 6.27k | 362.60 | 7.59k | 76.67% | 19.56ms | 3.95ms | 31.88ms | 61.46% | 21.22ms | 22.41ms | 22.94ms | 28.06ms |
bin/server_crystal_lucky | http://127.0.0.1:3000/user/0 | 0 | 153565 | 50761.87 | 17.28MB | 5.71MB | 6.43k | 781.17 | 8.32k | 66.25% | 18.63ms | 4.06ms | 29.49ms | 61.24% | 19.96ms | 21.87ms | 22.26ms | 26.06ms |
bin/server_crystal_raze | http://127.0.0.1:3000/ | 0 | 233135 | 76288.13 | 13.78MB | 4.51MB | 9.76k | 786.15 | 12.50k | 72.92% | 12.29ms | 3.89ms | 220.79ms | 82.95% | 11.20ms | 12.19ms | 18.16ms | 18.82ms |
bin/server_crystal_raze | http://127.0.0.1:3000/user | 0 | 185399 | 61392.67 | 10.96MB | 3.63MB | 7.76k | 653.98 | 9.99k | 72.08% | 15.50ms | 3.76ms | 216.45ms | 55.24% | 13.41ms | 19.38ms | 20.00ms | 22.56ms |
bin/server_crystal_raze | http://127.0.0.1:3000/user/0 | 0 | 175584 | 57626.32 | 15.41MB | 5.06MB | 7.35k | 694.44 | 8.84k | 76.67% | 16.46ms | 3.36ms | 26.91ms | 53.15% | 18.13ms | 19.92ms | 20.28ms | 21.61ms |
bin/server_crystal_router_cr | http://127.0.0.1:3000/ | 0 | 218501 | 71695.57 | 12.92MB | 4.24MB | 9.15k | 683.06 | 10.11k | 80.42% | 13.71ms | 3.52ms | 37.88ms | 84.16% | 11.56ms | 16.90ms | 17.55ms | 23.78ms |
bin/server_crystal_router_cr | http://127.0.0.1:3000/user | 0 | 198660 | 65673.96 | 11.75MB | 3.88MB | 8.31k | 1.48k | 12.28k | 76.67% | 14.58ms | 11.59ms | 226.51ms | 99.00% | 12.43ms | 18.04ms | 19.46ms | 26.10ms |
bin/server_crystal_router_cr | http://127.0.0.1:3000/user/0 | 0 | 182777 | 60266.05 | 16.04MB | 5.29MB | 7.65k | 838.48 | 8.79k | 76.67% | 16.02ms | 4.21ms | 50.41ms | 87.15% | 13.38ms | 19.25ms | 20.32ms | 26.49ms |
bin/server_csharp_aspnetcore | http://127.0.0.1:3000/ | 0 | 378524 | 124730.41 | 38.26MB | 12.61MB | 15.83k | 3.70k | 25.83k | 68.75% | 9.63ms | 25.53ms | 457.99ms | 98.18% | 6.95ms | 10.26ms | 14.09ms | 133.66ms |
bin/server_csharp_aspnetcore | http://127.0.0.1:3000/user | 0 | 333324 | 109888.1 | 33.70MB | 11.11MB | 13.95k | 4.26k | 27.28k | 72.50% | 8.38ms | 12.69ms | 236.92ms | 96.51% | 7.77ms | 10.60ms | 15.26ms | 31.31ms |
bin/server_csharp_aspnetcore | http://127.0.0.1:3000/user/0 | 0 | 306721 | 100775.99 | 41.24MB | 13.55MB | 12.83k | 3.70k | 27.89k | 72.08% | 9.41ms | 14.55ms | 248.14ms | 96.81% | 8.12ms | 11.05ms | 17.44ms | 43.06ms |
bin/server_elixir_phoenix | http://127.0.0.1:3000/ | 0 | 392165 | 127368.81 | 53.48MB | 17.37MB | 16.36k | 2.79k | 24.13k | 69.17% | 7.96ms | 13.60ms | 258.86ms | 96.98% | 7.08ms | 11.53ms | 16.03ms | 28.81ms |
bin/server_elixir_phoenix | http://127.0.0.1:3000/user | 0 | 342806 | 112356.8 | 46.75MB | 15.32MB | 14.31k | 2.97k | 22.12k | 67.50% | 9.11ms | 13.55ms | 248.43ms | 95.16% | 8.39ms | 13.53ms | 18.73ms | 33.42ms |
bin/server_elixir_phoenix | http://127.0.0.1:3000/user/0 | 0 | 361732 | 117508.71 | 59.68MB | 19.39MB | 15.08k | 3.51k | 30.93k | 67.50% | 9.23ms | 15.68ms | 247.18ms | 95.77% | 7.76ms | 13.64ms | 19.63ms | 41.16ms |
bin/server_elixir_plug | http://127.0.0.1:3000/ | 0 | 405226 | 131613.59 | 55.26MB | 17.95MB | 16.93k | 2.30k | 24.00k | 70.00% | 8.06ms | 13.98ms | 228.96ms | 97.61% | 7.09ms | 10.97ms | 15.15ms | 30.30ms |
bin/server_elixir_plug | http://127.0.0.1:3000/user | 0 | 392856 | 129104.6 | 53.58MB | 17.61MB | 16.38k | 2.71k | 22.03k | 68.75% | 8.71ms | 14.30ms | 231.07ms | 96.33% | 7.91ms | 12.49ms | 17.58ms | 34.64ms |
bin/server_elixir_plug | http://127.0.0.1:3000/user/0 | 0 | 374981 | 122544.93 | 61.51MB | 20.10MB | 15.66k | 2.20k | 21.16k | 67.50% | 8.32ms | 13.38ms | 225.04ms | 97.03% | 7.33ms | 11.59ms | 16.01ms | 30.10ms |
bin/server_go_echo | http://127.0.0.1:3000/ | 0 | 819571 | 264847.72 | 90.67MB | 29.30MB | 34.04k | 4.84k | 52.41k | 70.42% | 3.58ms | 7.19ms | 215.66ms | 97.69% | 2.50ms | 4.45ms | 6.57ms | 14.80ms |
bin/server_go_echo | http://127.0.0.1:3000/user | 0 | 807222 | 265386.98 | 89.30MB | 29.36MB | 33.64k | 6.63k | 53.95k | 69.17% | 4.34ms | 11.17ms | 221.52ms | 97.64% | 2.41ms | 4.65ms | 7.67ms | 23.99ms |
bin/server_go_echo | http://127.0.0.1:3000/user/0 | 0 | 785742 | 255415.71 | 109.40MB | 35.56MB | 32.68k | 4.90k | 51.22k | 72.92% | 3.48ms | 4.93ms | 204.84ms | 95.48% | 2.61ms | 4.66ms | 6.75ms | 11.88ms |
bin/server_go_fasthttprouter | http://127.0.0.1:3000/ | 0 | 1621931 | 527439.74 | 143.85MB | 46.78MB | 67.60k | 14.16k | 115.33k | 69.17% | 2.04ms | 6.78ms | 207.12ms | 98.96% | 1.16ms | 1.97ms | 3.59ms | 8.91ms |
bin/server_go_fasthttprouter | http://127.0.0.1:3000/user | 0 | 1526712 | 502096.08 | 135.41MB | 44.53MB | 63.65k | 13.35k | 103.73k | 65.83% | 1.92ms | 4.29ms | 209.18ms | 97.39% | 1.23ms | 2.14ms | 3.68ms | 8.49ms |
bin/server_go_fasthttprouter | http://127.0.0.1:3000/user/0 | 0 | 1444057 | 465506.19 | 225.85MB | 72.81MB | 61.11k | 14.88k | 117.29k | 70.34% | 1.85ms | 2.34ms | 205.80ms | 91.16% | 1.22ms | 2.20ms | 3.91ms | 8.65ms |
bin/server_go_gin | http://127.0.0.1:3000/ | 0 | 612884 | 199074.99 | 67.80MB | 22.02MB | 25.51k | 4.58k | 46.50k | 69.17% | 4.97ms | 8.14ms | 208.75ms | 95.82% | 3.67ms | 6.01ms | 9.10ms | 23.62ms |
bin/server_go_gin | http://127.0.0.1:3000/user | 0 | 591529 | 193788.08 | 65.44MB | 21.44MB | 24.62k | 5.02k | 39.03k | 64.58% | 6.66ms | 14.53ms | 411.65ms | 95.60% | 3.67ms | 6.91ms | 13.00ms | 46.83ms |
bin/server_go_gin | http://127.0.0.1:3000/user/0 | 0 | 607260 | 197618.21 | 84.55MB | 27.52MB | 25.27k | 4.29k | 37.62k | 70.42% | 5.66ms | 11.72ms | 222.35ms | 96.43% | 3.56ms | 6.26ms | 10.21ms | 35.96ms |
bin/server_go_gorilla_mux | http://127.0.0.1:3000/ | 0 | 775874 | 253425.31 | 85.83MB | 28.04MB | 32.35k | 4.69k | 52.35k | 68.75% | 3.98ms | 9.85ms | 215.92ms | 98.89% | 2.68ms | 4.52ms | 6.39ms | 14.63ms |
bin/server_go_gorilla_mux | http://127.0.0.1:3000/user | 0 | 761568 | 249912.71 | 84.25MB | 27.65MB | 31.72k | 6.29k | 52.76k | 73.75% | 4.17ms | 8.70ms | 212.63ms | 96.56% | 2.59ms | 4.84ms | 7.58ms | 22.54ms |
bin/server_go_gorilla_mux | http://127.0.0.1:3000/user/0 | 0 | 678855 | 219975.73 | 93.23MB | 30.21MB | 28.27k | 3.50k | 43.58k | 68.75% | 4.52ms | 8.56ms | 209.87ms | 97.74% | 3.27ms | 5.41ms | 7.87ms | 18.69ms |
bin/server_go_iris | http://127.0.0.1:3000/ | 0 | 925624 | 301753.59 | 102.40MB | 33.38MB | 38.49k | 7.09k | 67.67k | 72.08% | 3.84ms | 11.59ms | 211.21ms | 98.76% | 2.21ms | 3.86ms | 6.11ms | 19.89ms |
bin/server_go_iris | http://127.0.0.1:3000/user | 0 | 908462 | 296528.82 | 100.50MB | 32.80MB | 37.82k | 6.18k | 55.85k | 68.33% | 3.17ms | 4.30ms | 206.58ms | 93.73% | 2.29ms | 4.05ms | 6.31ms | 13.02ms |
bin/server_go_iris | http://127.0.0.1:3000/user/0 | 0 | 885129 | 287740.15 | 123.24MB | 40.06MB | 36.80k | 6.14k | 71.85k | 72.92% | 4.11ms | 12.50ms | 212.94ms | 98.70% | 2.35ms | 4.00ms | 6.32ms | 22.05ms |
bin/server_nim_jester | http://127.0.0.1:3000/ | 0 | 104348 | 34268.04 | 7.66MB | 2.52MB | 4.37k | 1.20k | 8.59k | 72.50% | 67.11ms | 202.64ms | 1.98s | 93.88% | 18.81ms | 22.42ms | 25.69ms | 1.16s |
bin/server_nim_jester | http://127.0.0.1:3000/user | 0 | 86728 | 28680.98 | 6.37MB | 2.11MB | 3.63k | 1.29k | 6.85k | 63.33% | 67.98ms | 198.61ms | 1.97s | 94.08% | 21.83ms | 25.40ms | 28.05ms | 1.14s |
bin/server_nim_jester | http://127.0.0.1:3000/user/0 | 0 | 98151 | 32163.86 | 10.02MB | 3.28MB | 4.11k | 1.08k | 6.54k | 61.67% | 68.95ms | 203.43ms | 1.97s | 93.77% | 19.97ms | 23.47ms | 26.09ms | 1.16s |
bin/server_nim_mofuw | http://127.0.0.1:3000/ | 0 | 1671295 | 539182.73 | 218.36MB | 70.45MB | 70.07k | 22.02k | 105.93k | 59.41% | 2.53ms | 3.23ms | 43.80ms | 86.57% | 0.88ms | 3.43ms | 6.93ms | 14.61ms |
bin/server_nim_mofuw | http://127.0.0.1:3000/user | 0 | 1633107 | 532965.14 | 213.37MB | 69.63MB | 68.21k | 23.16k | 103.35k | 55.00% | 2.60ms | 3.31ms | 41.45ms | 86.72% | 0.91ms | 3.53ms | 7.04ms | 14.93ms |
bin/server_nim_mofuw | http://127.0.0.1:3000/user/0 | 0 | 1501165 | 484228.34 | 239.08MB | 77.12MB | 63.61k | 23.52k | 120.07k | 56.78% | 2.58ms | 3.10ms | 37.81ms | 86.16% | 1.00ms | 3.53ms | 6.83ms | 13.92ms |
bin/server_node_clusterexpress | http://127.0.0.1:3000/ | 0 | 318062 | 102691.44 | 49.14MB | 15.87MB | 13.15k | 1.16k | 17.59k | 78.24% | 8.74ms | 5.69ms | 222.79ms | 85.92% | 7.53ms | 9.38ms | 15.07ms | 21.74ms |
bin/server_node_clusterexpress | http://127.0.0.1:3000/user | 0 | 317782 | 103023.11 | 49.10MB | 15.92MB | 13.10k | 0.91k | 16.68k | 77.92% | 8.99ms | 5.80ms | 138.44ms | 85.88% | 7.59ms | 10.93ms | 15.19ms | 20.04ms |
bin/server_node_clusterexpress | http://127.0.0.1:3000/user/0 | 0 | 299576 | 96774.53 | 54.85MB | 17.72MB | 12.41k | 0.95k | 18.04k | 80.83% | 9.83ms | 7.34ms | 161.71ms | 95.52% | 7.76ms | 11.66ms | 15.51ms | 23.78ms |
bin/server_node_clusterpolka | http://127.0.0.1:3000/ | 0 | 645788 | 209503.08 | 60.97MB | 19.78MB | 26.90k | 9.70k | 60.35k | 56.67% | 4.48ms | 6.63ms | 226.78ms | 94.30% | 3.20ms | 5.58ms | 7.77ms | 19.59ms |
bin/server_node_clusterpolka | http://127.0.0.1:3000/user | 0 | 593863 | 191684.9 | 56.07MB | 18.10MB | 24.64k | 8.42k | 56.39k | 70.00% | 4.70ms | 3.70ms | 68.53ms | 83.68% | 3.63ms | 7.06ms | 7.72ms | 18.28ms |
bin/server_node_clusterpolka | http://127.0.0.1:3000/user/0 | 0 | 570068 | 183965.9 | 70.13MB | 22.63MB | 23.65k | 7.04k | 50.45k | 70.42% | 6.09ms | 9.73ms | 175.25ms | 96.31% | 4.00ms | 7.13ms | 9.27ms | 46.69ms |
bin/server_node_express | http://127.0.0.1:3000/ | 0 | 34993 | 11511.97 | 5.41MB | 1.78MB | 1.46k | 280.53 | 2.04k | 68.33% | 60.17ms | 33.93ms | 570.70ms | 97.65% | 66.44ms | 70.94ms | 71.24ms | 200.86ms |
bin/server_node_express | http://127.0.0.1:3000/user | 0 | 33819 | 11198.21 | 5.22MB | 1.73MB | 1.42k | 214.86 | 2.02k | 72.92% | 84.16ms | 99.75ms | 1.08s | 95.66% | 82.90ms | 87.92ms | 88.56ms | 611.26ms |
bin/server_node_express | http://127.0.0.1:3000/user/0 | 0 | 32196 | 10591.63 | 5.90MB | 1.94MB | 1.35k | 184.29 | 1.96k | 71.67% | 75.17ms | 17.14ms | 399.10ms | 94.00% | 78.91ms | 80.32ms | 80.56ms | 105.86ms |
bin/server_node_polka | http://127.0.0.1:3000/ | 0 | 76015 | 24987.94 | 7.18MB | 2.36MB | 3.18k | 343.50 | 4.29k | 75.42% | 37.98ms | 37.48ms | 512.75ms | 97.79% | 37.73ms | 38.35ms | 40.62ms | 250.85ms |
bin/server_node_polka | http://127.0.0.1:3000/user | 0 | 70009 | 23143.53 | 6.61MB | 2.19MB | 2.93k | 0.90k | 7.92k | 78.33% | 40.43ms | 47.99ms | 548.47ms | 96.88% | 40.91ms | 42.31ms | 45.05ms | 304.40ms |
bin/server_node_polka | http://127.0.0.1:3000/user/0 | 0 | 65674 | 21601.55 | 8.08MB | 2.66MB | 2.75k | 340.76 | 3.97k | 70.42% | 43.86ms | 35.44ms | 548.26ms | 97.57% | 43.59ms | 44.37ms | 46.98ms | 236.18ms |
bin/server_python_django | http://127.0.0.1:3000/ | 2009 | 2009 | 662.34 | 478.71KB | 157.82KB | 131.60 | 93.46 | 390.00 | 70.00% | 189.21ms | 126.89ms | 1.67s | 91.19% | 161.77ms | 162.11ms | 168.71ms | 648.35ms |
bin/server_python_django | http://127.0.0.1:3000/user | 1390 | 1390 | 457.19 | 331.21KB | 108.94KB | 78.47 | 55.33 | 232.00 | 65.24% | 251.68ms | 214.92ms | 1.82s | 80.79% | 169.18ms | 191.07ms | 653.37ms | 990.28ms |
bin/server_python_django | http://127.0.0.1:3000/user/0 | 1739 | 1739 | 574.2 | 414.37KB | 136.82KB | 84.44 | 78.37 | 505.00 | 86.87% | 193.83ms | 154.23ms | 1.67s | 90.97% | 167.15ms | 168.41ms | 323.15ms | 661.44ms |
bin/server_python_flask | http://127.0.0.1:3000/ | 2400 | 2400 | 792.29 | 571.88KB | 188.79KB | 103.10 | 77.09 | 310.00 | 74.89% | 137.11ms | 37.08ms | 982.96ms | 74.38% | 150.92ms | 151.64ms | 152.36ms | 203.48ms |
bin/server_python_flask | http://127.0.0.1:3000/user | 1917 | 1917 | 634.62 | 456.79KB | 151.22KB | 100.57 | 98.21 | 424.00 | 82.80% | 179.99ms | 143.72ms | 1.82s | 92.96% | 160.01ms | 161.39ms | 173.67ms | 650.35ms |
bin/server_python_flask | http://127.0.0.1:3000/user/0 | 2239 | 2239 | 739.73 | 533.51KB | 176.26KB | 98.72 | 44.05 | 171.00 | 66.37% | 115.38ms | 58.76ms | 937.90ms | 95.49% | 106.06ms | 106.54ms | 107.33ms | 330.52ms |
bin/server_python_flask.py | http://127.0.0.1:3000/ | 0 | 6570 | 2157.47 | 0.96MB | 322.36KB | 420.35 | 211.76 | 0.87k | 66.89% | 54.86ms | 84.03ms | 1.71s | 96.47% | 45.96ms | 46.33ms | 46.55ms | 530.84ms |
bin/server_python_flask.py | http://127.0.0.1:3000/user | 0 | 3863 | 1247.86 | 577.19KB | 186.45KB | 241.25 | 135.24 | 555.00 | 67.11% | 95.27ms | 160.02ms | 1.66s | 93.09% | 49.03ms | 56.90ms | 69.50ms | 683.14ms |
bin/server_python_flask.py | http://127.0.0.1:3000/user/0 | 0 | 5994 | 1945.56 | 1.05MB | 347.70KB | 277.92 | 152.44 | 613.00 | 61.06% | 54.43ms | 57.86ms | 882.16ms | 94.98% | 44.32ms | 49.48ms | 54.78ms | 301.67ms |
bin/server_python_japronto | http://127.0.0.1:3000/ | 0 | 351606 | 113929.6 | 26.49MB | 8.58MB | 15.77k | 4.32k | 60.80k | 95.98% | 7.94ms | 1.42ms | 24.67ms | 91.49% | 8.30ms | 8.38ms | 8.51ms | 9.04ms |
bin/server_python_japronto | http://127.0.0.1:3000/user | 0 | 341686 | 110321.4 | 25.74MB | 8.31MB | 14.80k | 3.30k | 36.56k | 96.55% | 8.47ms | 1.50ms | 18.28ms | 91.15% | 8.72ms | 8.95ms | 9.34ms | 10.04ms |
bin/server_python_japronto | http://127.0.0.1:3000/user/0 | 0 | 312898 | 100973.34 | 32.53MB | 10.50MB | 14.04k | 6.19k | 71.09k | 95.98% | 8.93ms | 2.38ms | 19.28ms | 86.98% | 9.55ms | 10.01ms | 10.24ms | 12.86ms |
bin/server_python_sanic | http://127.0.0.1:3000/ | 0 | 580624 | 187388.49 | 65.89MB | 21.27MB | 27.42k | 11.10k | 72.61k | 66.98% | 5.66ms | 6.19ms | 62.27ms | 85.36% | 3.56ms | 8.12ms | 14.45ms | 26.23ms |
bin/server_python_sanic | http://127.0.0.1:3000/user | 0 | 554967 | 179550.77 | 62.98MB | 20.38MB | 25.93k | 10.25k | 100.85k | 78.50% | 5.34ms | 5.09ms | 59.48ms | 87.21% | 3.70ms | 7.43ms | 11.47ms | 24.14ms |
bin/server_python_sanic | http://127.0.0.1:3000/user/0 | 0 | 567336 | 183433.45 | 80.62MB | 26.07MB | 26.80k | 10.78k | 84.82k | 67.92% | 5.28ms | 5.13ms | 44.22ms | 85.32% | 3.68ms | 7.58ms | 12.10ms | 23.16ms |
bin/server_ruby_rack-routing | http://127.0.0.1:3000/ | 0 | 15179 | 4951.28 | 563.28KB | 183.74KB | 635.38 | 339.65 | 1.91k | 74.58% | 3.15ms | 5.25ms | 89.85ms | 87.96% | 244.00us | 4.18ms | 9.57ms | 23.86ms |
bin/server_ruby_rack-routing | http://127.0.0.1:3000/user | 0 | 13006 | 4272.23 | 482.64KB | 158.54KB | 622.16 | 332.39 | 1.99k | 70.48% | 3.69ms | 5.45ms | 63.49ms | 87.51% | 1.35ms | 5.17ms | 10.45ms | 24.99ms |
bin/server_ruby_rack-routing | http://127.0.0.1:3000/user/0 | 0 | 12338 | 4011.15 | 819.32KB | 266.37KB | 516.25 | 187.29 | 1.32k | 69.17% | 3.88ms | 5.03ms | 51.09ms | 86.64% | 1.99ms | 5.73ms | 10.35ms | 22.49ms |
bin/server_ruby_rails | http://127.0.0.1:3000/ | 0 | 1875 | 613.3 | 320.43KB | 104.81KB | 125.37 | 9.19 | 141.00 | 84.00% | 7.99ms | 1.32ms | 29.69ms | 90.56% | 7.79ms | 8.14ms | 8.87ms | 10.92ms |
bin/server_ruby_rails | http://127.0.0.1:3000/user | 0 | 1904 | 628.44 | 325.39KB | 107.40KB | 127.39 | 10.26 | 151.00 | 70.67% | 7.87ms | 1.01ms | 22.48ms | 85.24% | 7.79ms | 8.25ms | 8.79ms | 10.04ms |
bin/server_ruby_rails | http://127.0.0.1:3000/user/0 | 0 | 1657 | 542.23 | 480.59KB | 157.27KB | 110.92 | 9.06 | 131.00 | 50.67% | 9.04ms | 1.34ms | 31.06ms | 91.67% | 8.85ms | 9.33ms | 10.12ms | 11.67ms |
bin/server_ruby_roda | http://127.0.0.1:3000/ | 0 | 18740 | 6098.28 | 1.13MB | 375.19KB | 784.14 | 305.62 | 2.28k | 73.33% | 2.56ms | 3.68ms | 34.64ms | 85.97% | 0.91ms | 3.70ms | 7.45ms | 16.09ms |
bin/server_ruby_roda | http://127.0.0.1:3000/user | 0 | 17809 | 5864.87 | 1.07MB | 360.83KB | 744.92 | 309.04 | 2.21k | 72.92% | 2.69ms | 3.64ms | 47.11ms | 86.84% | 1.10ms | 3.95ms | 7.39ms | 15.84ms |
bin/server_ruby_roda | http://127.0.0.1:3000/user/0 | 0 | 15445 | 5022.63 | 1.36MB | 451.25KB | 646.34 | 116.34 | 1.02k | 74.17% | 3.10ms | 3.51ms | 34.21ms | 86.05% | 2.00ms | 4.55ms | 7.71ms | 15.43ms |
bin/server_ruby_sinatra | http://127.0.0.1:3000/ | 0 | 6785 | 2222.48 | 1.11MB | 373.31KB | 283.81 | 129.05 | 830.00 | 71.25% | 7.05ms | 10.10ms | 94.58ms | 86.75% | 2.67ms | 10.21ms | 20.15ms | 45.19ms |
bin/server_ruby_sinatra | http://127.0.0.1:3000/user | 0 | 6105 | 2003.0 | 1.00MB | 336.44KB | 255.30 | 97.98 | 660.00 | 73.75% | 7.83ms | 10.76ms | 160.95ms | 87.26% | 3.31ms | 11.58ms | 21.03ms | 46.81ms |
bin/server_ruby_sinatra | http://127.0.0.1:3000/user/0 | 0 | 5760 | 1879.4 | 1.11MB | 370.74KB | 240.86 | 96.47 | 510.00 | 70.42% | 8.31ms | 10.74ms | 98.79ms | 85.99% | 4.15ms | 12.54ms | 22.77ms | 47.71ms |
bin/server_rust_iron | http://127.0.0.1:3000/ | 0 | 1188777 | 387991.67 | 85.03MB | 27.75MB | 56.88k | 38.75k | 116.29k | 44.29% | 261.99us | 287.77us | 20.67ms | 96.25% | 221.00us | 321.00us | 411.00us | 813.00us |
bin/server_rust_iron | http://127.0.0.1:3000/user | 0 | 1134025 | 372690.66 | 81.11MB | 26.66MB | 63.33k | 38.46k | 118.83k | 49.44% | 259.09us | 1.03ms | 210.33ms | 99.79% | 210.00us | 316.00us | 400.00us | 808.00us |
bin/server_rust_iron | http://127.0.0.1:3000/user/0 | 0 | 1057872 | 344931.0 | 132.16MB | 43.09MB | 44.31k | 28.36k | 105.51k | 55.83% | 326.64us | 273.32us | 27.81ms | 91.85% | 301.00us | 419.00us | 542.00us | 1.05ms |
bin/server_rust_nickel | http://127.0.0.1:3000/ | 0 | 1099128 | 360547.86 | 136.27MB | 44.70MB | 122.94k | 16.13k | 148.69k | 54.44% | 42.98us | 64.37us | 12.15ms | 99.90% | 39.00us | 49.00us | 70.00us | 82.00us |
bin/server_rust_nickel | http://127.0.0.1:3000/user | 0 | 920631 | 304764.17 | 114.14MB | 37.78MB | 154.26k | 3.23k | 159.85k | 78.33% | 47.97us | 19.87us | 6.96ms | 84.82% | 55.00us | 60.00us | 63.00us | 73.00us |
bin/server_rust_nickel | http://127.0.0.1:3000/user/0 | 0 | 1067947 | 348500.72 | 168.05MB | 54.84MB | 119.31k | 5.50k | 129.25k | 74.44% | 48.61us | 92.77us | 12.04ms | 99.91% | 47.00us | 55.00us | 62.00us | 77.00us |
bin/server_rust_rocket | http://127.0.0.1:3000/ | 0 | 844189 | 277320.55 | 73.26MB | 24.07MB | 94.31k | 45.87k | 134.78k | 66.67% | 74.61us | 104.76us | 10.88ms | 99.76% | 65.00us | 92.00us | 123.00us | 156.00us |
bin/server_rust_rocket | http://127.0.0.1:3000/user | 0 | 1083600 | 358731.21 | 94.04MB | 31.13MB | 121.17k | 8.30k | 138.57k | 61.11% | 77.38us | 265.66us | 12.24ms | 99.33% | 56.00us | 68.00us | 80.00us | 146.00us |
bin/server_rust_rocket | http://127.0.0.1:3000/user/0 | 0 | 754582 | 247564.57 | 116.58MB | 38.25MB | 126.60k | 12.62k | 148.16k | 68.33% | 80.26us | 89.57us | 12.12ms | 89.14% | 72.00us | 100.00us | 177.00us | 219.00us |
Rankings
Ranking by Average Requests per second:
- 680446 req/sec : bin/server_cpp_evhtp
- 518792 req/sec : bin/server_nim_mofuw
- 498347 req/sec : bin/server_go_fasthttprouter
- 368537 req/sec : bin/server_rust_iron
- 337937 req/sec : bin/server_rust_nickel
- 295340 req/sec : bin/server_go_iris
- 294538 req/sec : bin/server_rust_rocket
- 261883 req/sec : bin/server_go_echo
- 241104 req/sec : bin/server_go_gorilla_mux
- 196827 req/sec : bin/server_go_gin
- 195051 req/sec : bin/server_node_clusterpolka
- 183457 req/sec : bin/server_python_sanic
- 127754 req/sec : bin/server_elixir_plug
- 119078 req/sec : bin/server_elixir_phoenix
- 111798 req/sec : bin/server_csharp_aspnetcore
- 108408 req/sec : bin/server_python_japronto
- 100829 req/sec : bin/server_node_clusterexpress
- 65878 req/sec : bin/server_crystal_router_cr
- 65102 req/sec : bin/server_crystal_raze
- 52676 req/sec : bin/server_crystal_lucky
- 48605 req/sec : bin/server_crystal_kemal
- 31704 req/sec : bin/server_nim_jester
- 23244 req/sec : bin/server_node_polka
- 11100 req/sec : bin/server_node_express
- 5661 req/sec : bin/server_ruby_roda
- 4411 req/sec : bin/server_ruby_rack-routing
- 2034 req/sec : bin/server_ruby_sinatra
- 1783 req/sec : bin/server_python_flask.py
- 722 req/sec : bin/server_python_flask
- 594 req/sec : bin/server_ruby_rails
- 564 req/sec : bin/server_python_django
- -1 req/sec : bin/server_crystal_amber
from web-frameworks.
Python's django is missing some urls
module that pip
doesn't know about so no clue how to install that. Flask using gunicorn is apparently borked, but running flask straight works, no clue what's up there...
from web-frameworks.
Setting up scala now (ah been a while, I miss this language, hate the JVM, but scala is fun, and sbt is awesome). I have no clue how to do anything with obj and swift, does anyone have some easy instructions on setting those up and getting them working?
from web-frameworks.
I installed every module I could find for python that contains url
and django still fails to load django.urls
, wonderful design here... >.>
from web-frameworks.
31704 req/sec : bin/server_nim_jester
I wouldn't call that abysmally slow ;)
That's my framework which I haven't put any optimisation effort into at all yet. That's where https://github.com/dom96/httpbeast comes in. Happy to see mofuw beating me to the punch, it shows what you can achieve if you just put a little effort into optimisation (and winning benchmarks ;)).
CC @2vg. You'll like the results, keep up the awesome work! :)
from web-frameworks.
Oh and btw. Keep in mind that Jester is single threaded, it does not take advantage of extra cores at all.
from web-frameworks.
@dom96 That is a BIG issue then, you need to multi-thread that stuff! ^.^
You want to fix the server for that? :-)
For note, it's still about half (almost) crystal's speed and crystal is single-core too, so add in multi-core to that server and some optimizations and let's get it on up near the top! :-)
from web-frameworks.
I was curious, so I set the C++ webserver to single-threaded (I made the source configurable, so I just change the thread count constant at the top of the main.cpp
file to be 1
instead of -1
and recompiled) and ran the test again with just cpp and crystal, results:
╰─➤ ../stats.exs -w 1 -d 3 cpp crystal
Total Cores: 16
Concurrent Connections: 1000
Processing servers:
- bin/server_cpp_evhtp
- bin/server_crystal_amber
- bin/server_crystal_kemal
- bin/server_crystal_lucky
- bin/server_crystal_raze
- bin/server_crystal_router_cr
Processing: bin/server_cpp_evhtp
Processing: bin/server_crystal_amber
unable to connect to 127.0.0.1:3000 Connection refused
unable to connect to 127.0.0.1:3000 Connection refused
unable to connect to 127.0.0.1:3000 Connection refused
unable to connect to 127.0.0.1:3000 Connection refused
-
-
- Test returned an unsuccessful error code, output of test of bin/server_crystal_amber:
-
unable to connect to 127.0.0.1:3000 Connection refused
-
-
- Test returned an unsuccessful error code, output of test of bin/server_crystal_amber:
-
unable to connect to 127.0.0.1:3000 Connection refused
-
-
- Test returned an unsuccessful error code, output of test of bin/server_crystal_amber:
-
Processing: bin/server_crystal_kemal
Processing: bin/server_crystal_lucky
Processing: bin/server_crystal_raze
Processing: bin/server_crystal_router_cr
Path | URL | Errors | Total Requests Count | Total Requests/s | Total Requests Throughput | Total Throughput/s | Req/s Avg | Req/s Stdev | Req/s Max | Req/s +/- | Latency Avg | Latency Stdev | Latency Max | Latency +/- | 50% | 75% | 90% | 99% |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
bin/server_cpp_evhtp | http://127.0.0.1:3000/ | 0 | 260933 | 85452.54 | 15.93MB | 5.22MB | 10.92k | 431.99 | 11.36k | 77.50% | 11.46ms | 1.10ms | 217.01ms | 98.78% | 11.40ms | 11.54ms | 11.69ms | 12.70ms |
bin/server_cpp_evhtp | http://127.0.0.1:3000/user | 0 | 247617 | 81823.78 | 15.11MB | 4.99MB | 10.36k | 474.42 | 11.36k | 76.67% | 11.81ms | 1.17ms | 217.14ms | 99.59% | 12.04ms | 12.17ms | 12.29ms | 12.60ms |
bin/server_cpp_evhtp | http://127.0.0.1:3000/user/0 | 0 | 242518 | 79602.16 | 21.74MB | 7.14MB | 10.16k | 304.48 | 11.36k | 80.42% | 12.25ms | 354.60us | 25.84ms | 95.49% | 12.27ms | 12.36ms | 12.45ms | 12.65ms |
bin/server_crystal_kemal | http://127.0.0.1:3000/ | 0 | 177555 | 58424.24 | 18.29MB | 6.02MB | 7.43k | 1.15k | 10.80k | 78.75% | 16.36ms | 14.84ms | 452.18ms | 98.85% | 14.12ms | 18.87ms | 21.18ms | 31.52ms |
bin/server_crystal_kemal | http://127.0.0.1:3000/user | 0 | 133004 | 44012.84 | 13.70MB | 4.53MB | 5.57k | 522.50 | 6.32k | 75.83% | 21.86ms | 4.00ms | 231.14ms | 74.77% | 23.79ms | 24.16ms | 24.43ms | 26.61ms |
bin/server_crystal_kemal | http://127.0.0.1:3000/user/0 | 0 | 116350 | 38064.93 | 15.31MB | 5.01MB | 4.87k | 391.70 | 5.77k | 76.25% | 25.08ms | 2.60ms | 28.77ms | 90.22% | 25.96ms | 26.22ms | 26.50ms | 28.10ms |
bin/server_crystal_lucky | http://127.0.0.1:3000/ | 0 | 174762 | 57498.49 | 13.00MB | 4.28MB | 7.32k | 379.74 | 8.34k | 70.42% | 16.87ms | 4.14ms | 29.05ms | 71.69% | 14.79ms | 20.33ms | 21.34ms | 26.82ms |
bin/server_crystal_lucky | http://127.0.0.1:3000/user | 0 | 154264 | 51000.93 | 11.48MB | 3.79MB | 6.46k | 616.74 | 7.98k | 71.67% | 18.78ms | 4.23ms | 228.34ms | 62.08% | 20.26ms | 21.76ms | 22.25ms | 27.48ms |
bin/server_crystal_lucky | http://127.0.0.1:3000/user/0 | 0 | 151574 | 49661.73 | 16.91MB | 5.54MB | 6.35k | 480.72 | 7.71k | 77.50% | 18.94ms | 4.18ms | 30.27ms | 60.49% | 20.46ms | 22.45ms | 22.78ms | 25.36ms |
bin/server_crystal_raze | http://127.0.0.1:3000/ | 0 | 212377 | 69998.25 | 12.56MB | 4.14MB | 8.89k | 679.65 | 11.34k | 75.00% | 13.63ms | 3.58ms | 26.78ms | 72.68% | 11.62ms | 17.10ms | 18.33ms | 23.27ms |
bin/server_crystal_raze | http://127.0.0.1:3000/user | 0 | 181886 | 60130.17 | 10.75MB | 3.56MB | 7.61k | 451.57 | 8.61k | 64.58% | 15.85ms | 3.69ms | 29.18ms | 68.90% | 17.04ms | 18.79ms | 19.53ms | 24.11ms |
bin/server_crystal_raze | http://127.0.0.1:3000/user/0 | 0 | 165348 | 54445.25 | 14.51MB | 4.78MB | 6.92k | 470.80 | 7.94k | 74.17% | 17.99ms | 3.74ms | 38.19ms | 59.45% | 19.70ms | 20.24ms | 21.24ms | 28.43ms |
bin/server_crystal_router_cr | http://127.0.0.1:3000/ | 0 | 216743 | 71173.68 | 12.82MB | 4.21MB | 9.07k | 528.60 | 10.10k | 72.50% | 13.72ms | 3.31ms | 25.20ms | 71.47% | 11.66ms | 17.25ms | 17.98ms | 22.76ms |
bin/server_crystal_router_cr | http://127.0.0.1:3000/user | 0 | 185255 | 61115.7 | 10.95MB | 3.61MB | 7.76k | 660.98 | 9.29k | 74.17% | 15.59ms | 3.63ms | 27.45ms | 63.43% | 13.90ms | 19.07ms | 19.65ms | 24.61ms |
bin/server_crystal_router_cr | http://127.0.0.1:3000/user/0 | 0 | 190514 | 62629.73 | 16.53MB | 5.44MB | 7.98k | 0.99k | 9.76k | 70.83% | 15.04ms | 6.19ms | 221.69ms | 96.67% | 12.78ms | 18.77ms | 19.49ms | 23.22ms |
Rankings
Ranking by Average Requests per second:
- 82292 req/sec : bin/server_cpp_evhtp
- 64973 req/sec : bin/server_crystal_router_cr
- 61524 req/sec : bin/server_crystal_raze
- 52720 req/sec : bin/server_crystal_lucky
- 46834 req/sec : bin/server_crystal_kemal
- -1 req/sec : bin/server_crystal_amber
from web-frameworks.
So crystal is decent with single-threaded, but considering the C++ code still has locks and I'm not sure the crystal code does, it is still not an accurate test (especially as the C++ code is still a good deal faster).
from web-frameworks.
@OvermindDL1 To be honest I'm not convinced these benchmarks should mean much for most users. I've been using Jester happily for years and never had any performance problems, the Nim forum (even though it's ugly) has been running in production for years. But yeah, I'll play the benchmark game, I've been meaning to for years as well :)
from web-frameworks.
Btw I'm very surprised that Rust isn't winning these benchmarks, they're always raving about zero-cost abstractions, what's happening? :)
from web-frameworks.
@OvermindDL1 To be honest I'm not convinced these benchmarks should mean much for most users.
Oh indeed, remember what repo this is, it is purely for testing maximal response time and load from servers in entirely unrealistic scenario's, essentially it's only testing framework overhead, 99.9999% of webservers easy will be dominated by the user code, in any case, it's only when the framework is beyond horribly slow (*cough*ruby*cough*python*cough*) that it really starts to matter.
Though a few times it will matter, like with IOT devices where you will potentially have millions upon millions of active connections. :-)
But yeah, I'll play the benchmark game, I've been meaning to for years as well :)
Yep, it's entirely just a fun thing, nothing serious at all. ^.^
I love putting in some concentration at times to really focus on some trivial problem though, it means that I can be quicker at work since I get my focusing out elsewhere. Heh...
Btw I'm very surprised that Rust isn't winning these benchmarks, they're always raving about zero-cost abstractions, what's happening? :)
It's mostly the backends they use. If you check their assembly they are fast, like should be faster than C++ kind of fast, but they are using the normal OS primitives and it doesn't look like any of the rust frameworks are using anything like libevent (though they could, it's a simple C API).
I might make a Rust server sometime if anyone pings me enough about it that uses evhtp from Rust, I'd expect it to be about equal to C++ then.
EDIT: For note, I think both Go and nodejs use libevent. If NIM's mofow framework doesn't use libevent, then I have to say major major kudo's on it's speed!
from web-frameworks.
EDIT: For note, I think both Go and nodejs use libevent. If NIM's mofow framework doesn't use libevent, then I have to say major major kudo's on it's speed!
It doesn't. It uses asyncdispatch
which uses the native operating system's polling API:
- IOCP - Windows
- kqueue - macOS
- epoll - Linux
All the libraries you mentioned are also using these primitives, perhaps they are very well optimised, but with effort I'm sure Rust could get up to the same speed. I just expected it to be there already since they really care about zero-cost abstractions.
from web-frameworks.
I just expected it to be there already since they really care about zero-cost abstractions.
Heh, true, though zero-cost abstractions does not mean that they know the most efficient kernel calls. ^.^;
from web-frameworks.
Related Issues (20)
- Add robyn python framework HOT 3
- drogon HOT 1
- [Gleam] Add mist HOT 8
- Bug in Framework Selection: All Frameworks Appear Regardless of Version and Language
- Check java version displayed HOT 3
- Add CodeBehind Framework HOT 1
- About elysiajs,gin benchmark HOT 3
- [RUST] Add Ntex
- [Go] Add `net/http` package’s router
- [Go] Add go-zero
- Use maven.compiler.release everywhere
- Do not apt-get update on containers if not required
- goravel framework HOT 2
- Real World frameworks flag HOT 13
- add ntex rs HOT 1
- Remove nanomux ? HOT 1
- [Python] Use gunicorn for bottle
- [OCAML] Avoid venv
- fastify with cluster HOT 3
- [Nim] Gulidenstern
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from web-frameworks.