On Sat, Oct 8, 2011 at 7:48 PM, Mateusz Paprocki <[email protected]> wrote: > Hi, > > On 8 October 2011 04:40, Maciej Fijalkowski <[email protected]> wrote: >> >> Hi >> >> I did some benchmarking of sympy under PyPy. I would like some >> comments on the validity of benchmarks. I've use PyPy nightly from 7th >> of Oct, CPython 2.7 release and sympy git trunk. >> >> Benchmarks (also http://paste.pocoo.org/show/489351/) >> >> Those are picked specifically so time stays around 1-5s >> >> Run: http://paste.pocoo.org/show/489352/ >> >> As you can see PyPy does give *a bit* of an edge once the JIT warms >> up, although it's not a whole lot. We'll look how to make pypy faster >> on those. > > > First, make sure that PyPy and CPython use the same ground (coefficient) > types: > > from sympy.polys.domains import GROUND_TYPES > print "types: %s" % GROUND_TYPES > > SymPy can pick up gmpy for this, instead of using pure Python types. To > force > usage of pure Python types, use the following code: > > import os > os.environ["SYMPY_GROUND_TYPES"] = "python" > > # now you can import sympy > > Caching can seriously affect benchmarks, so I would disable it completely: > > import os > os.environ["SYMPY_USE_CACHE"] = "no" > > # now you can import sympy > >> >> Is there any interest in making sympy more pypy friendly? > > > Can you provide some guidelines how we can achieve this? > > I was hoping that low-level stuff in SymPy should work well with PyPy, > e.g.: > > from sympy import ZZ > > from sympy.polys.factortools import dmp_factor_list > from sympy.polys.densearith import dmp_pow > from sympy.polys.specialpolys import f_6 > > def bench_lowlevel_mv_factor(): > # factor(f_6**2) in ZZ[x,y,z,t] > dmp_factor_list(dmp_pow(f_6, 2, 3, ZZ), 3, ZZ) > > This, however, gives results other than I would expect: > > $ pypy bench.py > cache: no > types: python > bench_lowlevel_mv_factor 1.41745710373 > bench_lowlevel_mv_factor 1.37492704391 > bench_lowlevel_mv_factor 1.28843522072 > ... > > $ python2.7 bench.py > cache: no > types: python > bench_lowlevel_mv_factor 0.23696398735 > bench_lowlevel_mv_factor 0.235101938248 > bench_lowlevel_mv_factor 0.238154888153 > ...
I think you're using gmpy, because on my machine those are not any faster under CPython. Cheers, fijal -- You received this message because you are subscribed to the Google Groups "sympy" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/sympy?hl=en.
