hydroflask <hydrofl...@yqxmail.com> 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 <rep...@bugs.python.org>
<https://bugs.python.org/issue46323>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to