[Python-Dev] New calling convention to avoid temporarily tuples when calling functions

Victor Stinner victor.stinner at gmail.com
Mon Aug 8 18:53:43 EDT 2016


2016-08-09 0:40 GMT+02:00 Guido van Rossum <guido at python.org>:
>> tl;dr I found a way to make CPython 3.6 faster and I validated that
>> there is no performance regression.
>
> But is there a performance improvement?

Sure.


On micro-benchmarks, you can see nice improvements:

* getattr(1, "real") becomes 44% faster
* list(filter(lambda x: x, list(range(1000)))) becomes 31% faster
* namedtuple.attr becomes -23% faster
* etc.

See https://bugs.python.org/issue26814#msg263999 for default => patch,
or https://bugs.python.org/issue26814#msg264003 for comparison python
2.7 / 3.4 / 3.5 / 3.6 / 3.6 patched.


On the CPython benchmark suite, I also saw many faster benchmarks:

Faster (25):
- pickle_list: 1.29x faster
- etree_generate: 1.22x faster
- pickle_dict: 1.19x faster
- etree_process: 1.16x faster
- mako_v2: 1.13x faster
- telco: 1.09x faster
- raytrace: 1.08x faster
- etree_iterparse: 1.08x faster
(...)

See https://bugs.python.org/issue26814#msg266359

Victor


More information about the Python-Dev mailing list