Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Everybody loves Benchmarks (Lightning Talk) by ...
Search
Pycon ZA
October 12, 2018
0
63
Everybody loves Benchmarks (Lightning Talk) by Nickolas Grigoriadis
A talk about Python Http client performance.
Pycon ZA
October 12, 2018
Tweet
Share
More Decks by Pycon ZA
See All by Pycon ZA
Trio: Structured Concurrency for Python by Jeremy Thurgood
pyconza
0
210
Preparing for the great snakes migration by Heather Williams
pyconza
0
80
Satellite Data and Super-Resolution to enhance a Slope Soaring Simulator by Schalk Heunis
pyconza
0
140
"Should we just go home on the third Friday afternoon?" by Kim van Wyk
pyconza
0
91
"Dolosse: Distributed Physics Data Acquisition System" by Bertram Losper & Sehlabaka Qhobosheane
pyconza
0
140
Modern JavaScript for Python Developers by Cory Zue
pyconza
0
290
Making Art with Python by Kirk Kaiser
pyconza
0
200
"Posits: A proposed new floating point number format for ML" by Kevin Colville
pyconza
0
130
"Building a label printer using Python, Arduino, duct tape and paperclips" by Johan Beyers
pyconza
0
260
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Side Projects
sachag
455
42k
A better future with KSS
kneath
239
17k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
Code Review Best Practice
trishagee
69
18k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
60k
Rebuilding a faster, lazier Slack
samanthasiow
82
9.1k
We Have a Design System, Now What?
morganepeng
53
7.7k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
940
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Raft: Consensus for Rubyists
vanstee
140
7k
Transcript
1 Everybody loves Benchmarks A quick show of Python HTTP
client performance. Nickolas Grigoriadis
2 We all love Python But a common complaint is
it is slow. Especially for HTTP requests.
3 Common mistakes Create a new “session” for each request:
requests.get(...) Instead do: session = requests.session() # Now re-use session session.get(...)
4 Benchmarks • Done on my old i5-630u notebook. •
Single process. • Against Apache (because I could turn HTTP/1.1 pipelining on/off) • Inside an Alpine-linux Docker container. https://github.com/vibora-io/benchmarks/pull/5
5 Benchmarks! - sync requests requests (opt) urllib3 urllib3 (opt)
PyCurl PyCurl (opt) 0 2000 4000 6000 8000 10000 12000 HTTP/1.0 — 1 HTTP/1.1 — 1
6 Benchmarks! - async aioHTTP aioHTTP (opt) aioHTTP (+uvloop) tornado.simple
tornado.simple (+uvloop) tornado.curl tornado.curl (+uvloop) vibora.client 0 500 1000 1500 2000 2500 3000 3500 4000 4500 HTTP/1.0 — 1 HTTP/1.1 — 1 HTTP/1.0 — 10 HTTP/1.1 — 10