gh-90370: Avoid temporary `varargs` tuple creation in argument passing by colorfulappl · Pull Request #30312 · python/cpython
Benchmark Result
Benchmark:
https://bugs.python.org/file50533
Environment:
OS: macOS 12.3
CPU: Apple M1 Pro
Compiler: Apple clang version 13.1.6
Build args: --enable-optimizations --with-lto
+-----------------------------------------------------+---------+-----------------------+
| Benchmark | base | opt |
+=====================================================+=========+=======================+
| print(a) | 133 ns | 126 ns: 1.06x faster |
+-----------------------------------------------------+---------+-----------------------+
| print(a, b, c) | 337 ns | 326 ns: 1.04x faster |
+-----------------------------------------------------+---------+-----------------------+
| print(a, b, c, *v) | 679 ns | 661 ns: 1.03x faster |
+-----------------------------------------------------+---------+-----------------------+
| print(a, sep='', file=stdout) | 134 ns | 125 ns: 1.07x faster |
+-----------------------------------------------------+---------+-----------------------+
| print(a, sep='', flush=True, file=stdout) | 571 ns | 563 ns: 1.01x faster |
+-----------------------------------------------------+---------+-----------------------+
| print(*v, sep='', flush=True, file=stdout) | 833 ns | 819 ns: 1.02x faster |
+-----------------------------------------------------+---------+-----------------------+
| print(a, b, c, *v, sep='', flush=True, file=stdout) | 1.18 us | 1.16 us: 1.02x faster |
+-----------------------------------------------------+---------+-----------------------+
| Geometric mean | (ref) | 1.03x faster |
+-----------------------------------------------------+---------+-----------------------+