Which is the fastest Haskell web framework
| benchmark | ||
| .gitignore | ||
| LICENSE | ||
| README.md | ||
haskell-web-framework-shootout
Which is the fastest Haskell web framework
Experiments to benchmark haskell web frameworks.
benchmark/ folder contains webgear-benchmarks, with wai-routes and twain added to the comparison.
Building
cd benchmark
devenv shell
cabal build
cabal run webgear-benchmarks:users -- --output criterion-report.html
Sample results
benchmarking webgear/500
time 915.6 μs (911.9 μs .. 918.9 μs)
1.000 R² (1.000 R² .. 1.000 R²)
mean 907.7 μs (905.9 μs .. 909.5 μs)
std dev 6.277 μs (4.993 μs .. 8.280 μs)
benchmarking webgear/1000
time 1.821 ms (1.814 ms .. 1.827 ms)
1.000 R² (1.000 R² .. 1.000 R²)
mean 1.812 ms (1.807 ms .. 1.816 ms)
std dev 16.18 μs (13.03 μs .. 20.06 μs)
benchmarking webgear/5000
time 9.198 ms (9.151 ms .. 9.237 ms)
1.000 R² (1.000 R² .. 1.000 R²)
mean 9.147 ms (9.127 ms .. 9.169 ms)
std dev 57.77 μs (45.99 μs .. 78.28 μs)
benchmarking servant/500
time 3.939 ms (3.921 ms .. 3.953 ms)
1.000 R² (1.000 R² .. 1.000 R²)
mean 3.891 ms (3.878 ms .. 3.904 ms)
std dev 38.74 μs (32.27 μs .. 50.08 μs)
benchmarking servant/1000
time 7.861 ms (7.794 ms .. 7.926 ms)
1.000 R² (0.999 R² .. 1.000 R²)
mean 7.901 ms (7.877 ms .. 7.919 ms)
std dev 63.23 μs (45.47 μs .. 91.80 μs)
benchmarking servant/5000
time 40.32 ms (40.07 ms .. 40.61 ms)
1.000 R² (1.000 R² .. 1.000 R²)
mean 39.74 ms (39.56 ms .. 39.90 ms)
std dev 360.2 μs (285.9 μs .. 465.4 μs)
benchmarking scotty/500
time 3.595 ms (3.583 ms .. 3.604 ms)
1.000 R² (1.000 R² .. 1.000 R²)
mean 3.578 ms (3.573 ms .. 3.583 ms)
std dev 16.33 μs (13.94 μs .. 18.89 μs)
benchmarking scotty/1000
time 7.075 ms (7.037 ms .. 7.118 ms)
1.000 R² (1.000 R² .. 1.000 R²)
mean 7.120 ms (7.100 ms .. 7.134 ms)
std dev 46.07 μs (35.20 μs .. 70.37 μs)
benchmarking scotty/5000
time 36.20 ms (36.07 ms .. 36.41 ms)
1.000 R² (1.000 R² .. 1.000 R²)
mean 36.01 ms (35.90 ms .. 36.16 ms)
std dev 277.5 μs (196.2 μs .. 442.2 μs)
benchmarking wai-routes/500
time 727.9 μs (727.1 μs .. 728.6 μs)
1.000 R² (1.000 R² .. 1.000 R²)
mean 725.3 μs (723.7 μs .. 726.2 μs)
std dev 3.872 μs (2.749 μs .. 5.528 μs)
benchmarking wai-routes/1000
time 1.441 ms (1.438 ms .. 1.444 ms)
1.000 R² (1.000 R² .. 1.000 R²)
mean 1.436 ms (1.434 ms .. 1.438 ms)
std dev 6.300 μs (5.316 μs .. 7.598 μs)
benchmarking wai-routes/5000
time 7.192 ms (7.165 ms .. 7.215 ms)
1.000 R² (1.000 R² .. 1.000 R²)
mean 7.216 ms (7.205 ms .. 7.234 ms)
std dev 39.03 μs (25.18 μs .. 63.04 μs)
benchmarking twain/500
time 2.019 ms (2.014 ms .. 2.023 ms)
1.000 R² (1.000 R² .. 1.000 R²)
mean 2.007 ms (2.003 ms .. 2.010 ms)
std dev 11.40 μs (9.417 μs .. 13.82 μs)
benchmarking twain/1000
time 4.025 ms (4.016 ms .. 4.034 ms)
1.000 R² (1.000 R² .. 1.000 R²)
mean 4.008 ms (3.998 ms .. 4.016 ms)
std dev 28.00 μs (21.05 μs .. 35.29 μs)
benchmarking twain/5000
time 19.98 ms (19.77 ms .. 20.20 ms)
1.000 R² (1.000 R² .. 1.000 R²)
mean 19.83 ms (19.76 ms .. 19.93 ms)
std dev 191.9 μs (137.5 μs .. 258.0 μs)