On 2019-04-02 21:38, Mark Shannon wrote:
On 01/04/2019 6:31 am, Jeroen Demeyer wrote:
I added benchmarks for PEP 590:
Thanks. As expected for calls to C function for both PEPs and master perform about the same, as they are using almost the same calling convention under the hood.
While they are "about the same", in general PEP 580 is slightly faster than master and PEP 590. And PEP 590 actually has a minor slow-down for METH_VARARGS calls.
I think that this happens because PEP 580 has less levels of indirection than PEP 590. The vectorcall protocol (PEP 590) changes a slower level (tp_call) by a faster level (vectorcall), while PEP 580 just removes that level entirely: it calls the C function directly.
This shows that PEP 580 is really meant to have maximal performance in all cases, accidentally even making existing code faster.