Python and GMP.
Mark Dickinson
dickinsm at gmail.com
Tue Apr 21 08:07:26 EDT 2009
On Apr 21, 12:04 pm, bearophileH... at lycos.com wrote:
> Using inline ASM in Python sources isn't an option.
Except when it is. :)
There's a tiny amount of inline assembler in the
sources already: see Python/pymath.c and
Python/ceval.c. Not surprisingly, there's some
in the ctypes module as well.
There *are* places where it's very tempting to
add a little (optional, removable, carefully
tested, etc.) assembler to the long implementation:
one main reason that using 30-bit digits for longs
is slower (for some benchmarks) than using 15-bit
digits on 32-bit platforms is that there's no way
to tell C to do a 64-bit by 32-bit division, in cases
where you know (from understanding of the algorithm)
that the quotient fits into 32 bits.
On x86, replacing just two of the divisions
in Objects/longsobject.c by the appropriate 'divl'
inline assembler got me 10% speedups on some
benchmarks.
Mark
More information about the Python-list
mailing list