]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
Use Fraction's private attributes in arithmetic methods
authorSergey B Kirpichev <skirpichev@gmail.com>
Sun, 14 Mar 2021 04:43:36 +0000 (07:43 +0300)
committerSergey B Kirpichev <skirpichev@gmail.com>
Sun, 14 Mar 2021 05:27:13 +0000 (08:27 +0300)
commit046c84e8f970306b668d62cfacbd58f65b8c6e66
treec8cf96d05f465e84efdb5f53102a9d62d0a27f93
parent430e4764cb554ab4c3fef16990dc55186a18b771
Use Fraction's private attributes in arithmetic methods

That's slightly faster for small components.

Before:
$ ./python -m timeit -r11 -s 'from fractions import Fraction as F' \
-s 'a = F(10, 3)' -s 'b = F(6, 5)' 'a + b'
20000 loops, best of 11: 12.1 usec per loop
$ ./python -m timeit -r11 -s 'from fractions import Fraction as F' \
-s 'a = F(10, 3)' -s 'b = 7' 'a + b'
20000 loops, best of 11: 11.4 usec per loop

After:
$ ./python -m timeit -r11 -s 'from fractions import Fraction as F' \
-s 'a = F(10, 3)' -s 'b = F(6, 5)' 'a + b'
50000 loops, best of 11: 9.74 usec per loop
$ ./python -m timeit -r11 -s 'from fractions import Fraction as F' \
-s 'a = F(10, 3)' -s 'b = 7' 'a + b'
20000 loops, best of 11: 16.5 usec per loop

On the master:
$ ./python -m timeit -r11 -s 'from fractions import Fraction as F' \
-s 'a = F(10, 3)' -s 'b = F(6, 5)' 'a + b'
50000 loops, best of 11: 9.61 usec per loop
$ ./python -m timeit -r11 -s 'from fractions import Fraction as F' \
-s 'a = F(10, 3)' -s 'b = 7' 'a + b'
50000 loops, best of 11: 9.11 usec per loop
Lib/fractions.py