[Python-Dev] patch: speed up name access by up to 80%

Neal Norwitz neal@metaslash.com
Mon, 11 Feb 2002 18:20:01 -0500

Oren Tirosh wrote:
> On Mon, Feb 11, 2002 at 05:26:01PM -0500, Neal Norwitz wrote:
> > I tried this patch (*) by running the regression tests:
> >
> >       make && time ./python -E -tt Lib/test/regrtest.py
> >
> > All the expected tests passed and there were no failures, this is good.
> > The bad news is that it was slower.  It took 42 user seconds longer
> > with the patch than without.
> I tried this and the results were identical for both version (+-1 second)
> The regression tests most of their time on things like threads, sockets,
> signals and stuff like that which is barely affected by this patch and
> has a lot of other sources of variance.  Some subset of the regression
> tests may be good as a benchmark, though.
> I also got very strange results (some faster, some slower) with the
> python2.2 RPM package and didn't start to get consistent results until I
> used a freshly compiled interpreter for both the reference and DUT.  I want
> to see how the package was compiled and why it got such strange results.

I was surprised by the results.  I am using the latest version from CVS, 
plus I have some outstanding changes that would be unlikely 
to cause a conflict.  They deal with removing consecutive 
line numbers (there is a patch on SF) and speeding up conditionals.  
Nothing that is remotely close to dictionaries.

Here are all the options from the compile:

gcc -c -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -fkeep-inline-functions -fno-inline -fprofile-arcs -ftest-coverage -I.

It's possible that no inlining is hurting, but I would still have expected
your patch to be faster than without.  I also wouldn't expect the test
coverage to be hurting (-fprofile-arcs -ftest-coverage), but that is
possible.  It would be nice if someone else could duplicate either of
our results.