[Python-Dev] speeding up function calls

Neal Norwitz nnorwitz at gmail.com
Mon May 1 09:04:51 CEST 2006


Results: 2.86% for 1 arg (len), 11.8% for 2 args (min), and 1.6% for pybench.

./python.exe -m timeit 'for x in xrange(10000): len([])'
./python.exe -m timeit 'for x in xrange(10000): min(1,2)'

One part of it is a little dangerous though.

http://python.org/sf/1479611

The general idea is to preallocate arg tuples and never dealloc.  This
saves a fair amount of work.  I'm not sure it's entirely  safe though.

I noticed in doing this patch that PyTuple_Pack() calls _New() which
initializes each item to NULL, then in _Pack() each item is set to the
appropriate value.  If we could get rid of duplicate work like that
(or checking values in both callers and callees), we could get more
speed.  In order to try and find functions where this is more
important, you can use Walter's coverage results:

http://coverage.livinglogic.de

n


More information about the Python-Dev mailing list