STINNER Victor added the comment:
Oh, functools.partial.__call__() doesn't use fastcall yet. So compared to
Python 3.5, fastcall shouldn't explain a major performance difference. FYI I'm
working on an extension of fastcall to also support fastcall calling convention
for obj.__call__() ;-)
But maybe the regression is related to code moved in ceval.c to support
fastcall. I noticed differences with fastcall when you don't compile Python
with LTO+PGO.
--
About the bytecode, "g(2)" in Python 3.6b1 is:
0 LOAD_GLOBAL 0 (g)
2 LOAD_CONST 1 (2)
4 CALL_FUNCTION 1
6 POP_TOP
In Python 3.5 the bytecode is similar, but the bytecode size is variable and
CALL_FUNCTION is made of two parts: number of positional arguments and number
of keyword arguments.
0 LOAD_GLOBAL 0 (g)
3 LOAD_CONST 1 (2)
6 CALL_FUNCTION 1 (1 positional, 0 keyword pair)
9 POP_TOP
----------
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue28243>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com