[Python-Dev] patch: speed up name access by up to 80% (original) (raw)

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. -I./Include -DHAVE_CONFIG_H

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.

Neal