Issue 34637: Make start usable as a keyword argument for sum(). (original) (raw)

There doesn't seem to be any performance regression hoping that I am doing the benchmarks correctly. Some numbers for the PR.

Master

git checkout master git clean -xdf && ./configure && make -s -j4

$ cpython git:(master) ./python.exe Python 3.8.0a0 (heads/master:731ff68eee, Sep 12 2018, 11:19:46) [Clang 7.0.2 (clang-700.1.81)] on darwin Type "help", "copyright", "credits" or "license" for more information.

$ cpython git:(master) repeat 10 ./python.exe -m timeit "sum(range(10), 50)" 500000 loops, best of 5: 635 nsec per loop 500000 loops, best of 5: 682 nsec per loop 500000 loops, best of 5: 637 nsec per loop 500000 loops, best of 5: 648 nsec per loop 500000 loops, best of 5: 618 nsec per loop 500000 loops, best of 5: 621 nsec per loop 500000 loops, best of 5: 653 nsec per loop 500000 loops, best of 5: 624 nsec per loop 500000 loops, best of 5: 671 nsec per loop 500000 loops, best of 5: 659 nsec per loop

git fetch upstream pull/9208/head:sum-start-keyword git checkout sum-start-keyword git clean -xdf && ./configure && make -s -j4

$ cpython git:(sum-start-keyword) ./python.exe Python 3.8.0a0 (heads/sum-start-keyword:71b890cd56, Sep 12 2018, 11:23:02) [Clang 7.0.2 (clang-700.1.81)] on darwin Type "help", "copyright", "credits" or "license" for more information.

$ cpython git:(sum-start-keyword) repeat 10 ./python.exe -m timeit "sum(range(10), 50)" 500000 loops, best of 5: 655 nsec per loop 500000 loops, best of 5: 662 nsec per loop 500000 loops, best of 5: 669 nsec per loop 500000 loops, best of 5: 656 nsec per loop 500000 loops, best of 5: 666 nsec per loop 500000 loops, best of 5: 642 nsec per loop 500000 loops, best of 5: 638 nsec per loop 500000 loops, best of 5: 628 nsec per loop 500000 loops, best of 5: 684 nsec per loop 500000 loops, best of 5: 648 nsec per loop

$ cpython git:(sum-start-keyword) repeat 10 ./python.exe -m timeit "sum(range(10), start=50)" 500000 loops, best of 5: 637 nsec per loop 500000 loops, best of 5: 677 nsec per loop 500000 loops, best of 5: 649 nsec per loop 500000 loops, best of 5: 660 nsec per loop 500000 loops, best of 5: 692 nsec per loop 500000 loops, best of 5: 704 nsec per loop 500000 loops, best of 5: 638 nsec per loop 500000 loops, best of 5: 659 nsec per loop 500000 loops, best of 5: 637 nsec per loop 500000 loops, best of 5: 699 nsec per loop

I haven't tested the other PR serhiy mentioned since it has merge conflicts and I think it uses the same approach with argument clinic.

Thanks