[Python-Dev] Performance compares

M.-A. Lemburg mal@lemburg.com
Wed, 16 May 2001 20:33:44 +0200


After having read a little into the comparison thread, I tried
some performance compares on my own: the one between
the current CVS version and Python 1.5.2.

Both versions were compiled on the same Linux machine, using the
same GCC compiler and optimization settings.

Here are the results from pybench 0.9 and pystone; some of the
figures show quite dramatic slow-downs. I'm not sure where they
result from, but they do concern me a bit, since the upgrade
path from 1.5.2 is probably the most common one to be expected
in user-land.

Since it is possible that these figures result from my specific 
machine setup, I'd like to know what other people see on their
machines.

Thanks.
--

Python 1.5.2:
Pystone(1.1) time for 10000 passes = 3.26
This machine benchmarks at 3067.48 pystones/second

Python CVS:
Pystone(1.1) time for 10000 passes = 4.43
This machine benchmarks at 2257.34 pystones/second

--

PYBENCH 0.9

Benchmark: /home/lemburg/tmp/pybench-cvs-O.pyb (rounds=10, warp=20)

Tests:                              per run    per oper.    diff *)
------------------------------------------------------------------------
          BuiltinFunctionCalls:    1152.60 ms    9.04 us   +64.70%
           BuiltinMethodLookup:     903.90 ms    1.72 us          
                 CompareFloats:     908.30 ms    2.02 us   +40.94%
         CompareFloatsIntegers:    1276.25 ms    2.84 us   +37.15%
               CompareIntegers:    1075.50 ms    1.19 us   +21.09%
                  CompareLongs:     989.40 ms    2.20 us   +47.12%
                CompareStrings:     844.80 ms    2.25 us   +33.99%
                CompareUnicode:    1018.65 ms    2.72 us       n/a
                 ConcatStrings:    1226.30 ms    8.18 us   +92.56%
                 ConcatUnicode:    1575.40 ms   10.50 us       n/a
               CreateInstances:    2094.05 ms   49.86 us  +101.86%
       CreateStringsWithConcat:    1515.75 ms    7.58 us  +111.67%
       CreateUnicodeWithConcat:    1833.85 ms    9.17 us       n/a
                  DictCreation:    2795.30 ms   18.64 us  +203.34%
             DictWithFloatKeys:    2285.70 ms    3.81 us   +18.73%
           DictWithIntegerKeys:    1444.65 ms    2.41 us   +58.53%
            DictWithStringKeys:    1262.60 ms    2.10 us   +52.83%
                      ForLoops:     989.95 ms   99.00 us   -10.01%
                    IfThenElse:    1232.45 ms    1.83 us   +23.25%
                   ListSlicing:     621.40 ms  177.54 us          
                NestedForLoops:     986.60 ms    2.82 us   +52.09%
          NormalClassAttribute:    1231.15 ms    2.05 us   +36.70%
       NormalInstanceAttribute:    1114.15 ms    1.86 us   +27.11%
           PythonFunctionCalls:    1251.25 ms    7.58 us   +46.09%
             PythonMethodCalls:    1034.35 ms   13.79 us   +42.19%
                     Recursion:     922.15 ms   73.77 us   +36.76%
                  SecondImport:    1055.45 ms   42.22 us  +100.47%
           SecondPackageImport:    1061.35 ms   42.45 us   +96.31%
         SecondSubmoduleImport:    1292.35 ms   51.69 us   +77.89%
       SimpleComplexArithmetic:    1748.00 ms    7.95 us  +120.97%
        SimpleDictManipulation:    1172.85 ms    3.91 us   +47.85%
         SimpleFloatArithmetic:     881.25 ms    1.60 us   +12.30%
      SimpleIntFloatArithmetic:     833.80 ms    1.26 us          
       SimpleIntegerArithmetic:     839.00 ms    1.27 us          
        SimpleListManipulation:    1252.60 ms    4.64 us   +69.37%
          SimpleLongArithmetic:    1360.65 ms    8.25 us  +100.43%
                    SmallLists:    2380.05 ms    9.33 us  +116.72%
                   SmallTuples:    1793.80 ms    7.47 us  +101.52%
         SpecialClassAttribute:    1257.35 ms    2.10 us   +37.91%
      SpecialInstanceAttribute:    1340.25 ms    2.23 us   +21.13%
                StringMappings:    1601.50 ms   12.71 us       n/a
              StringPredicates:    1059.70 ms    3.78 us       n/a
                 StringSlicing:    1235.90 ms    7.06 us   +98.32%
                     TryExcept:    1272.55 ms    0.85 us   +28.39%
                TryRaiseExcept:    1383.45 ms   92.23 us   +77.48%
                  TupleSlicing:    1163.05 ms   11.08 us   +75.29%
               UnicodeMappings:    1232.80 ms   68.49 us       n/a
             UnicodePredicates:    1294.95 ms    5.76 us       n/a
             UnicodeProperties:    1410.45 ms    7.05 us       n/a
                UnicodeSlicing:    1296.80 ms    7.41 us       n/a
------------------------------------------------------------------------
            Average round time:   73388.00 ms                  n/a

*) measured against: /home/lemburg/tmp/pybench-1.5.2-O.pyb (rounds=10, warp=20)

(The compares not shown are below noise level (+-10%))

-- 
Marc-Andre Lemburg
______________________________________________________________________
Company & Consulting:                           http://www.egenix.com/
Python Software:                        http://www.lemburg.com/python/