New submission from Cezary Wagner <[email protected]>:
I am experienced programmer 10y+ - that is very very strange performance
problem when I play Python timeit with my son :)
three way operator a <= x <= b is slower than a <= x and x <= b.
It looks like wrong implementation since it is impossible that two separate
check is faster that one check (with two low level check in C).
import timeit
REPEATS = 100
def test1():
selected = []
for i in range(REPEATS):
if i >= 25 and i <= 75:
selected.append(i)
return selected
def test2():
selected = []
for i in range(REPEATS):
if 25 <= i <= 75:
selected.append(i)
return selected
print(timeit.timeit(test1))
print(timeit.timeit(test2))
Result is on Windows 10.
4.428947699998389
4.9062477999978
----------
components: Interpreter Core
messages: 416699
nosy: Cezary.Wagner
priority: normal
severity: normal
status: open
title: Bug or bad performance
type: performance
versions: Python 3.10
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue47221>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com