Awesome
Which is the fastest?
This project aims to be a load benchmarking suite, no more, no less
<div align="center"> :warning::warning::warning::warning::warning::warning::warning::warning: </div> <div align="center">Results are not <b>production-ready</b> <i>yet</i></div> <div align="center"> :warning::warning::warning::warning::warning::warning::warning::warning: </div>Measuring response times (routing times) for each framework (middleware).
Additional purposes :
- Helping decide beetween languages, depending on use case
- Learning languages, best practices, devops culture ...
- Having fun :heart:
Requirements
- Crystal as
built-in
tools are made in this language - Docker as frameworks are
isolated
into containers - wrk as benchmarking tool,
>= 4.1.0
:information_source: you need wrk
stable
git clone --branch 4.1.0 https://github.com/wg/wrk
:warning: docker
is used for development purpose, production
results will be computed on DigitalOcean :warning:
Usage
- Install all dependencies
shards install
- Build internal tools
shards build
- Build containers
jobs are either languages (example : crystal) or frameworks (example : router.cr)
bin/neph [job1] [job2] [job3] ...
- Start the benchmark ....
tools is a list of language / framework to challenge (example : ruby kemal amber go python)
bin/benchmarker [tools]
Results
<!-- Result from here -->Last update: 2019-02-28
OS: Linux (version: 4.16.3-301.fc28.x86_64, arch: x86_64)
CPU Cores: 8
Latency
Ranking (top 5)
:one: nickel (rust)
:two: roda (ruby)
:three: rack-routing (ruby)
:four: slim (php)
:five: laravel (php)
Full table
Language (Runtime) | Framework (Middleware) | Average | 50th percentile | 90th percentile | 99th percentile | 99.9th percentile | Standard deviation |
---|
Requests per seconds
Ranking (top 5)
:one: (japronto) (python)
:two: (actix-web) (rust)
:three: (agoo-c) (c)
:four: (kore) (c)
:five: (evhtp) (cpp)
Full table
Language (Runtime) | Framework (Middleware) | Requests / s | Throughput |
---|
How to contribute ?
In any way you want ...
- Request a framework addition
- Report a bug (on any implementation)
- Suggest an idea
- ...
Any kind of idea is :heart:
Contributors
- Peter Ohler - Author, maintainer
- Taichiro Suzuki - Author, maintainer
- OvermindDL1 - Maintainer
- Marwan Rabbâa - Mainainer