[issue26058] PEP 509: Add ma_version to PyDictObject

STINNER Victor report at bugs.python.org
Wed Jan 13 05:41:19 EST 2016


STINNER Victor added the comment:

I'm not a big fan of pybench (it looks unstable and so not reliable), but here are results with dict_version-4.patch.

I used more loops and a lower warp factor to get more reliable tests (I hope):

./python Tools/pybench/pybench.py -f pybench.orig -w 2 -C 100 -n 25
./python.patched Tools/pybench/pybench.py -f pybench.dictver -w 2 -C 100 -n 25
./python Tools/pybench/pybench.py -s pybench.dictver -c pybench.orig

-------------------------------------------------------------------------------
PYBENCH 2.1
-------------------------------------------------------------------------------
* using CPython 3.6.0a0 (default:77d24f51effc+, Jan 13 2016, 11:27:53) [GCC 5.3.1 20151207 (Red Hat 5.3.1-2)]
* disabled garbage collection
* system check interval set to maximum: 2147483647
* using timer: time.perf_counter
* timer: resolution=1e-09, implementation=clock_gettime(CLOCK_MONOTONIC)

-------------------------------------------------------------------------------
Benchmark: pybench.dictver
-------------------------------------------------------------------------------

    Rounds: 25
    Warp:   2
    Timer:  time.perf_counter

    Machine Details:
       Platform ID:    Linux-4.2.8-300.fc23.x86_64-x86_64-with-fedora-23-Twenty_Three
       Processor:      x86_64
    
    Python:
       Implementation: CPython
       Executable:     /home/haypo/prog/python/default/python
       Version:        3.6.0a0
       Compiler:       GCC 5.3.1 20151207 (Red Hat 5.3.1-2)
       Bits:           64bit
       Build:          Jan 13 2016 11:27:53 (#default:77d24f51effc+)
       Unicode:        UCS4


-------------------------------------------------------------------------------
Comparing with: pybench.orig
-------------------------------------------------------------------------------

    Rounds: 25
    Warp:   2
    Timer:  time.perf_counter

    Machine Details:
       Platform ID:    Linux-4.2.8-300.fc23.x86_64-x86_64-with-fedora-23-Twenty_Three
       Processor:      x86_64
    
    Python:
       Implementation: CPython
       Executable:     /home/haypo/prog/python/default/python
       Version:        3.6.0a0
       Compiler:       GCC 5.3.1 20151207 (Red Hat 5.3.1-2)
       Bits:           64bit
       Build:          Jan 13 2016 11:14:50 (#default:77d24f51effc)
       Unicode:        UCS4


Test                             minimum run-time        average  run-time
                                 this    other   diff    this    other   diff
-------------------------------------------------------------------------------
          BuiltinFunctionCalls:   230ms   229ms   +0.4%   241ms   230ms   +5.1%
           BuiltinMethodLookup:   130ms   132ms   -1.2%   135ms   134ms   +0.4%
                 CompareFloats:   147ms   149ms   -1.4%   151ms   149ms   +1.2%
         CompareFloatsIntegers:   330ms   333ms   -0.8%   347ms   335ms   +3.6%
               CompareIntegers:   214ms   209ms   +2.5%   223ms   209ms   +6.5%
        CompareInternedStrings:   160ms   145ms  +10.8%   170ms   145ms  +16.9%
                  CompareLongs:   121ms   120ms   +0.2%   124ms   120ms   +3.4%
                CompareStrings:   132ms   131ms   +0.7%   138ms   132ms   +4.8%
    ComplexPythonFunctionCalls:   233ms   235ms   -0.7%   241ms   238ms   +1.1%
                 ConcatStrings:   166ms   165ms   +0.3%   177ms   167ms   +6.0%
               CreateInstances:   240ms   247ms   -3.1%   253ms   249ms   +1.5%
            CreateNewInstances:   178ms   186ms   -4.2%   188ms   188ms   +0.1%
       CreateStringsWithConcat:   315ms   316ms   -0.5%   331ms   318ms   +4.3%
                  DictCreation:   254ms   236ms   +7.8%   262ms   237ms  +10.5%
             DictWithFloatKeys:   211ms   199ms   +6.1%   219ms   201ms   +8.9%
           DictWithIntegerKeys:   171ms   163ms   +5.4%   180ms   166ms   +9.0%
            DictWithStringKeys:   163ms   142ms  +14.5%   170ms   144ms  +17.7%
                      ForLoops:   121ms   121ms   -0.3%   125ms   124ms   +0.9%
                    IfThenElse:   179ms   178ms   +0.7%   185ms   178ms   +3.6%
                   ListSlicing:   194ms   193ms   +0.4%   198ms   194ms   +2.2%
                NestedForLoops:   212ms   210ms   +1.2%   220ms   210ms   +4.6%
      NestedListComprehensions:   205ms   212ms   -3.3%   218ms   215ms   +1.5%
          NormalClassAttribute:   429ms   407ms   +5.5%   446ms   408ms   +9.3%
       NormalInstanceAttribute:   212ms   206ms   +2.8%   226ms   209ms   +8.0%
           PythonFunctionCalls:   208ms   210ms   -1.4%   215ms   212ms   +1.2%
             PythonMethodCalls:   275ms   253ms   +8.7%   293ms   255ms  +14.9%
                     Recursion:   333ms   328ms   +1.4%   366ms   329ms  +11.0%
                  SecondImport:   190ms   188ms   +0.8%   201ms   188ms   +6.7%
           SecondPackageImport:   195ms   192ms   +1.8%   214ms   192ms  +11.7%
         SecondSubmoduleImport:   472ms   447ms   +5.7%   502ms   455ms  +10.3%
       SimpleComplexArithmetic:   141ms   138ms   +2.1%   146ms   139ms   +5.2%
        SimpleDictManipulation:   287ms   288ms   -0.3%   313ms   290ms   +8.0%
         SimpleFloatArithmetic:   138ms   137ms   +0.7%   151ms   140ms   +7.9%
      SimpleIntFloatArithmetic:   172ms   180ms   -4.3%   182ms   181ms   +0.4%
       SimpleIntegerArithmetic:   172ms   169ms   +1.9%   184ms   170ms   +8.1%
      SimpleListComprehensions:   166ms   167ms   -0.7%   179ms   173ms   +3.3%
        SimpleListManipulation:   159ms   153ms   +3.9%   166ms   155ms   +7.6%
          SimpleLongArithmetic:   118ms   117ms   +1.2%   123ms   118ms   +4.3%
                    SmallLists:   210ms   204ms   +2.8%   221ms   205ms   +7.3%
                   SmallTuples:   244ms   252ms   -3.1%   255ms   256ms   -0.2%
         SpecialClassAttribute:   424ms   416ms   +1.8%   442ms   419ms   +5.5%
      SpecialInstanceAttribute:   214ms   211ms   +1.3%   223ms   214ms   +4.5%
                StringMappings:   442ms   446ms   -0.8%   460ms   447ms   +2.9%
              StringPredicates:   259ms   258ms   +0.2%   281ms   260ms   +8.2%
                 StringSlicing:   218ms   220ms   -1.2%   228ms   221ms   +3.3%
                     TryExcept:   130ms   135ms   -3.9%   134ms   136ms   -1.4%
                    TryFinally:   173ms   171ms   +0.9%   180ms   172ms   +4.4%
                TryRaiseExcept:    62ms    63ms   -1.2%    63ms    63ms   +0.9%
                  TupleSlicing:   223ms   224ms   -0.3%   251ms   232ms   +8.0%
                   WithFinally:   263ms   264ms   -0.4%   280ms   265ms   +5.4%
               WithRaiseExcept:   205ms   203ms   +0.7%   215ms   204ms   +5.5%
-------------------------------------------------------------------------------
Totals:                         11040ms 10900ms   +1.3% 11635ms 10991ms   +5.9%

(this=pybench.dictver, other=pybench.orig)

----------

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue26058>
_______________________________________


More information about the Python-bugs-list mailing list