[Cython] speed.pypy.org

Stefan Behnel stefan_ml at behnel.de
Fri Apr 15 22:20:51 CEST 2011


Stefan Behnel, 11.04.2011 15:08:
> I'm currently discussing with Maciej Fijalkowski (PyPy) how to get Cython
> running on speed.pypy.org (that's what I wrote "cythonrun" for). If it
> works out well, we may have it up in a couple of days.

... or maybe not. It may take a little longer due to lack of time on his side.


> I would expect that Cython won't be a big winner in this game, given that
> it will only compile plain untyped Python code. It's also going to fail
> entirely in some of the benchmarks. But I think it's worth having it up
> there, simply as a way for us to see where we are performance-wise and to
> get quick (nightly) feed-back about optimisations we try. The benchmark
> suite is also a nice set of real-world Python code that will allow us to
> find compliance issues.

Ok, here's what I have so far. I fixed a couple of bugs in Cython and got 
at least some of the benchmarks running. Note that they are actually simple 
ones, only a single module. Basically all complex benchmarks fail due to 
known bugs, such as Cython def functions not accepting attribute 
assignments (e.g. on wrapping). There's also a problem with code that uses 
platform specific names conditionally, such as WindowsError when running on 
Windows. Cython complains about non-builtin names here. I'm considering to 
turn that into a visible warning instead of an error, so that the name 
would instead be looked up dynamically to let the code fail at runtime 
*iff* it reaches the name lookup.

Anyway, here are the numbers. I got them with "auto_cpdef" enabled, 
although that doesn't even seem to make that a big difference. The baseline 
is a self-compiled Python 2.7.1+ (about a month old).

Stefan


### ai ###
Min: 0.402407 -> 0.362190: 1.1110x faster
Avg: 0.408784 -> 0.366898: 1.1142x faster
Significant (t=10.017195, a=0.95)
Stddev: 0.00824 -> 0.00442: 1.8668x smaller


### chaos ###  (with a bug fixed in the benchmark itself)
Min: 0.393362 -> 0.231932: 1.6960x faster
Avg: 0.401941 -> 0.234089: 1.7170x faster
Significant (t=36.128709, a=0.95)
Stddev: 0.01004 -> 0.00267: 3.7538x smaller


### crypto_pyaes ###
Min: 2.629560 -> 1.276433: 2.0601x faster
Avg: 2.639409 -> 1.277742: 2.0657x faster
Significant (t=368.652396, a=0.95)
Stddev: 0.00812 -> 0.00153: 5.3215x smaller


### fannkuch ###
Min: 1.512630 -> 0.853309: 1.7727x faster
Avg: 1.522860 -> 0.860237: 1.7703x faster
Significant (t=118.573908, a=0.95)
Stddev: 0.00880 -> 0.00887: 1.0073x larger


### float ###
Min: 0.452620 -> 0.343341: 1.3183x faster
Avg: 0.475137 -> 0.349356: 1.3600x faster
Significant (t=9.575876, a=0.95)
Stddev: 0.02838 -> 0.00757: 3.7489x smaller


### go ###
Min: 0.758998 -> 0.491929: 1.5429x faster
Avg: 0.764110 -> 0.496518: 1.5389x faster
Significant (t=90.848407, a=0.95)
Stddev: 0.00400 -> 0.00523: 1.3096x larger


### nbody_modified ###
Min: 0.399168 -> 0.197931: 2.0167x faster
Avg: 0.401379 -> 0.203112: 1.9762x faster
Significant (t=42.377829, a=0.95)
Stddev: 0.00293 -> 0.01004: 3.4337x larger


### raytracesimple ###   (module renamed from "raytrace-simple")
Min: 2.016425 -> 1.182970: 1.7045x faster
Avg: 2.030030 -> 1.192164: 1.7028x faster
Significant (t=78.219481, a=0.95)
Stddev: 0.02184 -> 0.00983: 2.2211x smaller


### richards ###
Min: 0.286723 -> 0.162430: 1.7652x faster
Avg: 0.289933 -> 0.165193: 1.7551x faster
Significant (t=52.898468, a=0.95)
Stddev: 0.00392 -> 0.00352: 1.1127x smaller


More information about the cython-devel mailing list