New submission from STINNER Victor:

Changes 27dc9a1c061e and 01b06ca45f64 converted the str (Unicode) methods to 
Argument Clinic, cool! But str methods taking more than one argument use 
positional-only arguments.

Currently, Argument Clinic doesn't use METH_FASTCALL for these methods, but 
METH_VARARGS.

There are two options:

* Allow passing arguments as keywoards: str.replace(old='a', new='b')
* Enhance Argument Clinic to use also METH_FASTCALL for functions using 
positional-only functions

The goal is to speedup method calls. Example with str.replace():

$ ./python-patch -m perf timeit '"a".replace("x", "y")' --duplicate=100 
--compare-to ./python-ref
python-ref: ..................... 132 ns +- 1 ns
python-patch: ..................... 102 ns +- 2 ns

Median +- std dev: [python-ref] 132 ns +- 1 ns -> [python-patch] 102 ns +- 2 
ns: 1.30x faster (-23%)

----------
messages: 285574
nosy: haypo, inada.naoki, larry, serhiy.storchaka
priority: normal
severity: normal
status: open
title: Use METH_FASTCALL in str methods
type: performance
versions: Python 3.7

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue29286>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to