Skip to content
Asynchronous networking benchmarks for upcoming PyPy release
Python C Lua
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
perfkit
tcp
vendor
.gitignore
README.md
graphs.png
post.txt
results.csv
results.ods
table.png
zenhttp.lua
zenhttp_aiohttp.py
zenhttp_curio_h11.py
zenhttp_falcon.py
zenhttp_gevent.py
zenhttp_klein.py
zenhttp_sanic.py
zenhttp_tornado.py
zenlines.py

README.md

Asynchronous HTTP libraries benchmark for upcoming PyPy release

For the accompanying blog post please see https://morepypy.blogspot.com.br/2017/03/async-http-benchmarks-on-pypy3.html

Prerequisites

A working Linux x86_64 distribution, preferably Ubuntu if you don't wanna build PyPy preview yourself. CPython 3.5 installed and PyPy build from 3.5 nightly. Everything else is vendored in the repository.

Results

Graphs

Table

Reproducing

The repository contains scripts to start the servers and run wrk several times against them. Each script will print a couple of dots while it's working and display a line with results in RPS separated by commas at the end.

If you prefer running wrk manually you should do so with:

vendor/wrk http://localhost:8080 -t 1 -c 100 -s zenhttp.lua

The exact commands are given below:


pypy_nightly=~/pypy-c-jit-90326-88ef793308eb-linux64/bin/pypy3
python3 -m perfkit python zenhttp_aiohttp.py wrk --script zenhttp.lua --repeat 10
python3 -m perfkit python --binary "$pypy_nightly" zenhttp_aiohttp.py wrk --script zenhttp.lua --repeat 10

python3 -m perfkit python zenhttp_curio_h11.py wrk --script zenhttp.lua --repeat 10
python3 -m perfkit python --binary "$pypy_nightly" zenhttp_curio_h11.py wrk --script zenhttp.lua --repeat 10

python3 -m perfkit python zenhttp_gevent.py wrk --script zenhttp.lua --repeat 10
python3 -m perfkit python --binary "$pypy_nightly" zenhttp_gevent.py wrk --script zenhttp.lua --repeat 10

python3 -m perfkit python zenhttp_tornado.py wrk --script zenhttp.lua --repeat 10
python3 -m perfkit python --binary "$pypy_nightly" zenhttp_tornado.py wrk --script zenhttp.lua --repeat 10

python3 -m perfkit python zenhttp_klein.py wrk --script zenhttp.lua --repeat 10
python3 -m perfkit python --binary "$pypy_nightly" wrk --script zenhttp.lua --repeat 10
You can’t perform that action at this time.