[Speed] Performance difference in call_method()
Victor Stinner
victor.stinner at gmail.com
Fri Nov 4 19:20:48 EDT 2016
I found some interesting differences using the Linux perf tool.
# perf stat -e L1-icache-loads,L1-icache-load-misses ./python
performance/benchmarks/bm_call_method.py --inherit=PYTHONPATH -v
--worker -l1 -n 25 -w0
2016-11-04 23:35 GMT+01:00 Victor Stinner <victor.stinner at gmail.com>:
> (1) ce85a1f129e3: 17 ms => 83877018ef97 (Oct 18): 25 ms
>
> https://hg.python.org/cpython/rev/83877018ef97
Comparison of metrics of rev ce85a1f129e3 (fast) => rev 83877018ef97 (slow):
L1-icache-load-misses: 0.06% => 8.41% of all L1-icache hits
Instructions per cycle: 2.38 => 1.41
stalled-cycles-frontend: 12.99% => 42.85% frontend cycles idle
stalled-cycles-backend: 2.28% => 21.36% backend cycles idle
So it confirms what I expected: call_method() is highly impacted by
the CPU L1 instruction cache.
I don't know exactly why the revision 83877018ef97 has an impact on
the CPU L1 cache.
Victor
More information about the Speed
mailing list