On Tue, Jul 10, 2018 at 8:55 PM Jeroen Demeyer <j.deme...@ugent.be> wrote: > > OK, I tried with --duplicate 200 and you can see the results at > https://gist.github.com/jdemeyer/f0d63be8f30dc34cc989cd11d43df248 > > In short, the timings with and without PEP 580 are roughly the same > (which is to be expected). Interestingly, a small but significant > improvement can be seen when calling *unbound* methods. > > The real improvement comes from supporting a new calling protocol: > formerly custom classes could only implement tp_call, but now they can > use FASTCALL just like built-in functions/methods. For this, there is an > improvement of roughly a factor 1.2 for calls without arguments, 1.6 for > calls with positional arguments and 2.8 for calls with keywords.
We know it when we introduced FASTCALL. What I want know is "how often" tp_call in custom type is called in real application. Does it boost real application performance significantly? 5%? 10%? If it's not significant enough, I want to wait make FASTCALL public until more evolutionary optimization happened. There are some remaining possible optimizations. For example, let's assume cfunction like this: static PyObject* myfunc_impl(PyObject *self, Py_ssize_t i) { ... } static PyObject* myfunc(PyObject *self, PyObject *arg) { Py_ssize_t i; if (!PyArg_Parse(arg, "n;myfunc", &i)) { return NULL; } return myfunc_impl(self, i); } Then, the function is called from another C extension like this: PyObject_CallFunction(func, "n", 42); Currently, we create temporary long object for passing argument. If there is protocol for exposeing format used by PyArg_Parse*, we can bypass temporal Python object and call myfunc_impl directly. I think optimization like this idea can boost application performance using Cython heavily. But in Python and stdlib, there are no enough "call C function from C function" scenarios, compared with Cython based applications. We really need help from Cython world for this area. Regards, -- INADA Naoki <songofaca...@gmail.com> _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com