STINNER Victor added the comment:

Ok, I fixed the PyObject_Call() bug, and tried a new approach to help the 
compiler for code placement: I moved all "call" functions into a new 
Objects/call.c file. It should help the compiler to inline more code, and I 
move functions which call themself closer: _PyObject_FastCall(), 
_PyCFunction_FastCall() and _PyFunction_FastCall() are now very close in the 
same file for example.

Not only the stack usage is better, but the performance seems also better: see 
benchmark results below.

Again, if you like the _PyObject_FastCall() idea (to reduce the stack 
consumption), I will split my big patch into smaller patches to have a 
"smoother" hg/git history.

Benchmark results on speed-python, CPython compiled with LTO+PGO:

haypo@speed-python$ python3 -m perf compare_to 
/home/haypo/benchmarks/2017-02-06_07-15-default-e06af4027546.json 
pyobject_fastcall-4_ref_e06af4027546.json -G  --min-speed=4
Faster (11):
- sympy_expand: 949 ms +- 12 ms -> 878 ms +- 7 ms: 1.08x faster (-8%)
- chameleon: 21.9 ms +- 0.2 ms -> 20.5 ms +- 0.3 ms: 1.07x faster (-7%)
- sympy_str: 425 ms +- 5 ms -> 399 ms +- 5 ms: 1.07x faster (-6%)
- sympy_integrate: 40.8 ms +- 0.3 ms -> 38.3 ms +- 0.4 ms: 1.06x faster (-6%)
- sympy_sum: 192 ms +- 6 ms -> 181 ms +- 7 ms: 1.06x faster (-6%)
- scimark_lu: 352 ms +- 11 ms -> 332 ms +- 13 ms: 1.06x faster (-6%)
- xml_etree_generate: 208 ms +- 2 ms -> 197 ms +- 3 ms: 1.05x faster (-5%)
- nbody: 233 ms +- 2 ms -> 222 ms +- 3 ms: 1.05x faster (-5%)
- telco: 14.7 ms +- 0.3 ms -> 14.0 ms +- 0.3 ms: 1.05x faster (-5%)
- scimark_fft: 662 ms +- 10 ms -> 633 ms +- 8 ms: 1.05x faster (-4%)
- genshi_text: 71.0 ms +- 0.8 ms -> 68.3 ms +- 0.7 ms: 1.04x faster (-4%)

Benchmark hidden because not significant (53): (...)

----------
Added file: http://bugs.python.org/file46559/pyobject_fastcall-4.patch

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue29465>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to