hydroflask <[email protected]> added the comment:
Just to clarify further, the original benchmark by corona10 did indeed lead to
`_CallPythonObject` being invoked but it was not quite the normal use-case. In
the original benchmark it invoked the generated ctypes thunk via Python so as
vstinner said it was doing this:
Python -> converters -> thunk-> _CallPythonObject -> converters-> Python
Namely using `PyCFuncPtr_call` to invoke the thunk generated by
`_ctypes_alloc_callback`. Normally when invoking C functions via
`PyCFuncPtr_call` it looks like this:
Python -> converters -> C_function
In the original benchmark setup no significant reduction in runtime was
observed by this patch. I noticed that it was not a typical use of
`_CallPythonObject`, where instead it would be a top-level C function calling
back into Python. Something like this:
C -> thunk -> _CallPythonObject() -> Python
The benchmark I provided exercises that use case and the >=10% reduction in
runtime was observed. Thanks to both corona10 and vstinner, I appreciate their
effort in this issue.
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue46323>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com