STINNER Victor added the comment: Result of pybench on Dict microbenchmarks:
DictCreation: 44ms 49ms -10.5% 44ms 49ms -10.7% DictWithFloatKeys: 35ms 35ms -0.5% 35ms 35ms -1.0% DictWithIntegerKeys: 28ms 28ms -1.2% 28ms 29ms -2.3% DictWithStringKeys: 26ms 27ms -3.2% 26ms 28ms -4.8% SimpleDictManipulation: 52ms 53ms -0.7% 53ms 53ms -0.4% Hum, as usuall, pybench doesn't seem reliable at all: I expect worse performance with the patch since it adds "version++" in dict.__setimte__(). I don't really trust pybench, results seem to have a lot of noise :-/ Maybe I'm not using pybench correctly? I used: $ make distclean; ./configure && make $ ./python Tools/pybench/pybench.py -f pybench.default $ patch -p1 < dict_version.patch $ ./python Tools/pybench/pybench.py -f pybench.dictversion $ ./python Tools/pybench/pybench.py -s pybench.dictversion -c pybench.default Full output: ------------------------------------------------------------------------------- PYBENCH 2.1 ------------------------------------------------------------------------------- * using CPython 3.6.0a0 (default:53271aa4d84c+, Jan 9 2016, 10:27:40) [GCC 5.1.1 20150618 (Red Hat 5.1.1-4)] * 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.dictversion ------------------------------------------------------------------------------- Rounds: 10 Warp: 10 Timer: time.perf_counter Machine Details: Platform ID: Linux-4.2.5-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.1.1 20150618 (Red Hat 5.1.1-4) Bits: 64bit Build: Jan 9 2016 10:27:40 (#default:53271aa4d84c+) Unicode: UCS4 ------------------------------------------------------------------------------- Comparing with: pybench.default ------------------------------------------------------------------------------- Rounds: 10 Warp: 10 Timer: time.perf_counter Machine Details: Platform ID: Linux-4.2.5-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.1.1 20150618 (Red Hat 5.1.1-4) Bits: 64bit Build: Jan 9 2016 10:21:57 (#default:53271aa4d84c) Unicode: UCS4 Test minimum run-time average run-time this other diff this other diff ------------------------------------------------------------------------------- BuiltinFunctionCalls: 42ms 42ms +0.1% 43ms 43ms -0.9% BuiltinMethodLookup: 26ms 25ms +5.7% 26ms 25ms +5.1% CompareFloats: 27ms 27ms -0.9% 27ms 28ms -4.2% CompareFloatsIntegers: 60ms 63ms -3.3% 61ms 65ms -6.8% CompareIntegers: 41ms 38ms +7.9% 41ms 38ms +7.2% CompareInternedStrings: 30ms 28ms +5.7% 30ms 28ms +5.0% CompareLongs: 24ms 22ms +8.6% 24ms 22ms +8.5% CompareStrings: 22ms 22ms +0.3% 23ms 24ms -6.6% ComplexPythonFunctionCalls: 43ms 42ms +1.2% 43ms 45ms -5.2% ConcatStrings: 29ms 32ms -11.0% 29ms 33ms -13.6% CreateInstances: 45ms 45ms +0.3% 46ms 46ms -0.4% CreateNewInstances: 34ms 34ms +0.6% 35ms 34ms +0.7% CreateStringsWithConcat: 58ms 58ms +0.1% 58ms 58ms -0.1% DictCreation: 44ms 49ms -10.5% 44ms 49ms -10.7% DictWithFloatKeys: 35ms 35ms -0.5% 35ms 35ms -1.0% DictWithIntegerKeys: 28ms 28ms -1.2% 28ms 29ms -2.3% DictWithStringKeys: 26ms 27ms -3.2% 26ms 28ms -4.8% ForLoops: 22ms 22ms +0.4% 22ms 22ms +0.6% IfThenElse: 34ms 34ms +0.9% 34ms 34ms +0.8% ListSlicing: 34ms 34ms -0.2% 34ms 34ms -0.1% NestedForLoops: 37ms 36ms +2.1% 37ms 36ms +2.1% NestedListComprehensions: 36ms 35ms +1.4% 36ms 36ms +1.8% NormalClassAttribute: 75ms 77ms -2.5% 75ms 77ms -2.3% NormalInstanceAttribute: 37ms 37ms +2.2% 38ms 37ms +2.5% PythonFunctionCalls: 37ms 36ms +1.8% 37ms 37ms +1.6% PythonMethodCalls: 50ms 47ms +5.5% 50ms 48ms +4.5% Recursion: 61ms 61ms -0.2% 61ms 62ms -0.2% SecondImport: 35ms 36ms -2.9% 35ms 37ms -3.3% SecondPackageImport: 37ms 37ms -0.3% 37ms 37ms -0.4% SecondSubmoduleImport: 89ms 87ms +2.1% 90ms 88ms +1.6% SimpleComplexArithmetic: 23ms 23ms +0.0% 24ms 24ms -0.1% SimpleDictManipulation: 52ms 53ms -0.7% 53ms 53ms -0.4% SimpleFloatArithmetic: 25ms 25ms -1.2% 25ms 25ms -1.0% SimpleIntFloatArithmetic: 32ms 32ms -0.3% 32ms 32ms -1.1% SimpleIntegerArithmetic: 32ms 32ms -0.6% 32ms 32ms -0.3% SimpleListComprehensions: 29ms 28ms +2.3% 30ms 29ms +3.2% SimpleListManipulation: 27ms 28ms -1.3% 28ms 28ms -1.4% SimpleLongArithmetic: 22ms 22ms +3.6% 23ms 22ms +4.4% SmallLists: 38ms 38ms -1.9% 38ms 41ms -7.0% SmallTuples: 47ms 44ms +7.8% 47ms 44ms +7.5% SpecialClassAttribute: 75ms 73ms +2.3% 75ms 73ms +2.2% SpecialInstanceAttribute: 38ms 39ms -1.8% 38ms 39ms -2.1% StringMappings: 84ms 83ms +0.8% 84ms 84ms +0.5% StringPredicates: 49ms 49ms -0.6% 49ms 49ms -1.0% StringSlicing: 42ms 42ms +0.8% 42ms 42ms +0.7% TryExcept: 25ms 25ms -0.4% 25ms 25ms -0.8% TryFinally: 31ms 31ms +1.1% 32ms 31ms +1.4% TryRaiseExcept: 12ms 12ms -0.8% 12ms 12ms -1.4% TupleSlicing: 43ms 43ms +0.1% 43ms 43ms -0.6% WithFinally: 49ms 50ms -0.9% 49ms 50ms -0.9% WithRaiseExcept: 39ms 39ms -0.6% 39ms 40ms -1.6% ------------------------------------------------------------------------------- Totals: 2011ms 2006ms +0.2% 2025ms 2035ms -0.5% (this=pybench.dictversion, other=pybench.default) ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue26058> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com