[pypy-dev] PyPy doesn't make code written in C faster

Amaury Forgeot d'Arc amauryfa at gmail.com
Thu May 30 19:48:10 CEST 2013


2013/5/30 Nathan Hurst <njh at njhurst.com>

> > Does it still make sense to add programs like this to our benchmarks?
> > So far, our benchmarks are "real-life" examples.  The benchmarks like
> > above are completely missing the point of PyPy, as they don't stress
> > at all the Python interpreter part.  There are also other cases where
> > PyPy's performance is very bad, like cpyext on an extension module
> > with lots of small C API calls.  I believe that it would still make
> > sense to list such cases in the official benchmark, and have the
> > descriptions of the benchmarks explain what's wrong with them.
>
> I agree that you should include them, I disagree that they are
> 'wrong'.  They measure the overhead of a C call.  Why should a C call
> be slower in pypy than cpython?  Presumably it could be compiled down
> to the appropriate instructions and then out-perform cpy.
>

The C API here is the one of the CPython interpreter (PyLong_FromLong &co)
To support it PyPy has to emulate many aspects, specially the fact that pypy
objects are movable memory, and a PyObject* pointer is not supposed to
change.

To get fair benchmarks, those extension modules should be rewritten,
with cffi for example: its C calls have very little overhead,
and it integrates very well with the rest of the PyPy interpreter.

-- 
Amaury Forgeot d'Arc
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/pypy-dev/attachments/20130530/889a407c/attachment.html>


More information about the pypy-dev mailing list