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
65
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
81
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
97
"Dolosse: Distributed Physics Data Acquisition System" by Bertram Losper & Sehlabaka Qhobosheane
pyconza
0
140
Modern JavaScript for Python Developers by Cory Zue
pyconza
0
300
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
270
Featured
See All Featured
Become a Pro
speakerdeck
PRO
29
5.5k
Raft: Consensus for Rubyists
vanstee
140
7.1k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
A designer walks into a library…
pauljervisheath
207
24k
Agile that works and the tools we love
rasmusluckow
330
21k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6k
jQuery: Nuts, Bolts and Bling
dougneiner
64
7.9k
Building an army of robots
kneath
306
46k
Making the Leap to Tech Lead
cromwellryan
135
9.5k
Making Projects Easy
brettharned
117
6.4k
The World Runs on Bad Software
bkeepers
PRO
70
11k
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