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.

Reply via email to