Message373234
Here are two timings for math.dist(). They were run with the production macOS builds from python.org:
$ python3.8 -m timeit -r 11 -s 'from math import dist' -s 'p=(1.1, 2.2); q=(1.7, 2.3)' 'dist(p, q)'
5000000 loops, best of 11: 58.4 nsec per loop
$ python3.9 -m timeit -r 11 -s 'from math import dist' -s 'p=(1.1, 2.2); q=(1.7, 2.3)' 'dist(p, q)'
5000000 loops, best of 11: 66.9 nsec per loop
The attached screen shot shows that the only change between the two versions is that the subclass check is inlined and fast in 3.8, but is an external function call in 3.9.
---- 3.8 subclass check -----------
movq 8(%r12), %rax
movl $0, 32(%rsp)
testb $4, 171(%rax)
je L779
---- 3.9 subclass check -----------
movq 8(%r12), %rdi
call _PyType_GetFlags
movl $0, 32(%rsp)
testl $67108864, %eax
je L856
The C code for math.dist() is unchanged between 3.8 and 3.9. Both use PyTuple_Check().
This isn't unique. Every single PyTuple_Check() is the similarly affected (approx. 225 occurrences). Presumably, this affects other type checks as well. |
|
Date |
User |
Action |
Args |
2020-07-07 17:53:54 | rhettinger | set | recipients:
+ rhettinger, pitrou, vstinner, petr.viktorin, skrah, lukasz.langa |
2020-07-07 17:53:54 | rhettinger | set | messageid: <1594144434.3.0.59988005976.issue39542@roundup.psfhosted.org> |
2020-07-07 17:53:54 | rhettinger | link | issue39542 messages |
2020-07-07 17:53:54 | rhettinger | create | |
|