*Image is not under MIT license (c) [Cryptid-Creations](http://cryptid-creations.deviantart.com/)*
sandshark
- zero dependencies!
- aiming for 100% test coverage, currently @ ~70%
- express.js syntax like with raw http performance
- setup & middlewares should work right out of the box with your expressjs project
- this is still "work in progress"!
currently in TODO
- improving performance for inc. connections (not better than expressjs on benchmark results with keep-alive missing)
- implement more express apis, a lot of stuff is still missing e.g. res.type(), app.disable()
- implement custom cookie, query & body parser that can be toggled via config
- microbench to reach 99,5% performance of raw http module
- improve test coverage to 100%
run example
- via
npm start
run tests
- via
npm test
run benchmarks
npm run benchmark sandshark
npm run benchmark express
npm run benchmark raw
npm run benchmark restify
npm run benchmark hapi
-
or run all benchmarks in comparison via
npm run benchmarks
ornpm run benchmark all
-
to compare expressjs and sandshark run
npm run compare
-
each benchmark will spawn a server and worker making requests in their own child processes
-
the loadtest worker is limited to a single thread and makes at least 2500 requests
-
the benchmarks currently lack additional features such as body parsing, query params, path variables and cookies
-
there is a good chance to have far more place for optimizations
-
since hapi feels rather slow, feel free to send a pull requests if you think that I got something wrong
benchmark results
- on a MacBook Air 11' 2014 Intel i5 quad @ 1.4 GHz
- node version 6.5.0 & server modules are present in package.json devDependencies
raw: 1725 sandshark: 1692 express: 1223 restify: 1084 hapi: 687
- with keep-alive turned off
express: 488 raw: 426 sandshark: 373 restify: 318 hapi: 314
disclaimer
- i started this project after reading Node Performance hapi vs express vs restify
- since their benchmarks are from March 2015, i guess they are outdated ;)
- in their benchmarks raw http performance hits 8500 req/s and express only 3000 req/s
- my benchmarks actually show expressjs way closer to raw http performance so another guess is that their benchmarks contain possible errors, sadly they have not posted them online
furthermore
- i would love to have further discussions on this, so please feel free to open issues or hit me up on twitter @silentleave or my website