[Python-Dev] PEP 576
Jeroen Demeyer
J.Demeyer at UGent.be
Wed Jun 27 06:00:54 EDT 2018
On 2018-06-26 21:43, Mark Shannon wrote:
> https://github.com/markshannon/pep-576
This actually looks close to Victor Stinner's bpo-29259. But instead of
storing the function pointer in the class, you're storing it in the
instance.
One concern that I have is that this might lead to code duplication. You
require that every class implements its own specialized
_FOO_FastcallKeywords() function. So you end up with
_PyCFunction_FastCallKeywords(), _PyMethodDescr_FastCallKeywords(),
_PyFunction_FastCallKeywords(). If I want to implement a similar class
myself, I have to reinvent that same wheel again. With PEP 580, I
replace all those _FOO_FastCallKeywords() functions by one
PyCCall_FASTCALL() function. Admittedly, my PyCCall_FASTCALL() is more
complex than each of those _FOO_FastcallKeywords() individually. But
overall, I think that PEP 580 leads to simpler code.
Second, you still have a performance problem for methods. You made sure
that the method optimizations in the Python bytecode interpreter
continue to work, but method calls from C will be slowed down. I don't
know to what extent and whether it really matters, but it's something to
note.
Jeroen.
More information about the Python-Dev
mailing list