[pypy-dev] Playing with PyPy and Django

Tin Tvrtković tinchester at gmail.com
Sat Feb 7 16:25:53 CET 2015


Alright, trying 10,000 warmup requests, and then 100 benchmark requests, 
"production" scenario (gunicorn, one worker, no debug):

PyPy3          26.956 [ms]
CPython 3.4    10.822 [ms]

So, not much improvement there. Also consider the slight inconvenience 
of mandatory manual warmup every deploy:

* would I need to warm up just the site, every application, or every 
template?
* I'd need a prepared session to warm up anything except the login page
* I'll be running more worker processes, so even more warmup requests, 
hopefully they'd get distributed evenly amongst the workers


On 07.02.2015 07:56, Omer Katz wrote:
> You need to warm up the JIT first.
> Run the benchmark a 10,000 times on PyPy before measuring and you'll 
> see the real performance improvement.
> Nevertheless, it does sound like you're hitting a performance bug(s) 
> somewhere. It's worth investigating.
>
> 2015-02-07 1:12 GMT+02:00 Tin Tvrtković <tinchester at gmail.com 
> <mailto:tinchester at gmail.com>>:
>
>     Hello, PyPy folks!
>
>     While trying to speed up one of my Django sites, I noticed a new
>     version of PyPy
>     had just been released. So I grabbed a fresh download of PyPy 3
>     (since this is
>     a Python 3 codebase) and tried taking it out for a spin.
>
>     However, as far as I can see, whatever I try PyPy is consistently
>     slower than
>     CPython for this.
>
>     Since this is a proprietary site, I've basically ripped out all
>     the code except
>     my settings.py and my requirements; and am benchmarking the Django
>     admin index.
>     The results are about the same.
>
>     I've set up a small repo that can be used to reproduce the
>     environment:
>     https://github.com/Tinche/PyPy-Django-Playground. There's
>     additional info in
>     the README there.
>
>     These tests have been carried out on Ubuntu Trusty, 64-bit.
>     CPython 3 is the
>     system Python, 3.4. PyPy has been downloaded from the official
>     site and
>     unzipped.
>
>     So what I basically do is set up an admin session, and use the
>     Django main admin
>     page. 200 warmup requests, then 100 benchmarked requests, look at
>     the mean
>     request time.
>
>     Some results:
>
>     Django's runserver, DEBUG mode:
>
>     PyPy3            485.389 [ms]
>     CPython 3.4      105.777 [ms]
>
>     Django's runserver, no debug:
>
>     PyPy3             44.661 [ms]
>     CPython 3.4       18.697 [ms]
>
>     Gunicorn, 1 worker, no debug:
>
>     PyPy3             28.615 [ms]
>     CPython 3.4       13.532 [ms]
>
>     I don't exactly claim to be an expert on benchmarking, but
>     assuming my site
>     is similar to the Django admin, CPython's gonna be giving me
>     better performance.
>     Also the debug runserver performance is kinda worrying. Nobody's
>     going to be
>     running this in production, but it makes development a little
>     slower and more
>     annoying than it should be.
>
>     Is there anything to make PyPy more competitive in these kinds of
>     scenarios?
>
>     Kind regards,
>     Tin
>     _______________________________________________
>     pypy-dev mailing list
>     pypy-dev at python.org <mailto:pypy-dev at python.org>
>     https://mail.python.org/mailman/listinfo/pypy-dev
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pypy-dev/attachments/20150207/5a6a9dd2/attachment.html>


More information about the pypy-dev mailing list