Message339636
> That is a one-off cost for the __length_hint__ of the range object specifically.
Objects with a known length (lists, sets, tuples) would not have that overhead.
That seems incorrect. This is not unique of range objects as it affects also objects with known lengths (like a list):
import perf
runner = perf.Runner()
runner.timeit("list_comp",
stmt="[x*2 for x in k]",
setup="k=list(range(10))")
Current master:
❯ ./python.exe ../check.py -n 10
.....................
list_comp: Mean +- std dev: 3.82 us +- 0.13 us
PR 12718:
❯ ./python.exe ../check.py -n 10
.....................
list_comp: Mean +- std dev: 4.38 us +- 0.16 us
Check also my other benchmark with a list iterator ( iter(list(range(10))) ) or this one with a generator comp:
import perf
runner = perf.Runner()
runner.timeit("list_comp",
stmt="[x*2 for x in it]",
setup="k=list(range(10));it=(x for x in k)")
Current master:
❯ ./python.exe ../check.py -n 10
.....................
list_comp: Mean +- std dev: 945 ns +- 27 ns
PR 12718:
❯ ./python.exe ../check.py -n 10
.....................
list_comp: Mean +- std dev: 1.33 us +- 0.05 us |
|
Date |
User |
Action |
Args |
2019-04-08 13:09:33 | pablogsal | set | recipients:
+ pablogsal, ronaldoussoren, ncoghlan, methane, serhiy.storchaka, Aaron Hall, anthony shaw |
2019-04-08 13:09:33 | pablogsal | set | messageid: <1554728973.18.0.881619811769.issue36551@roundup.psfhosted.org> |
2019-04-08 13:09:33 | pablogsal | link | issue36551 messages |
2019-04-08 13:09:32 | pablogsal | create | |
|