Stefan Pochmann <[email protected]> added the comment:
Benchmarking with two *Python* versions of bisect.insort, the "insert" version
takes 1.08 seconds to insort the shuffled range(10**5) while the slice
assignment version only takes 0.46 seconds:
from timeit import timeit
import random
from bisect import bisect_right
def insort1(a, x):
lo = bisect_right(a, x)
a.insert(lo, x)
def insort2(a, x):
lo = bisect_right(a, x)
a[lo:lo] = [x]
for _ in range(3):
a = list(range(10**5))
random.shuffle(a)
for insort in insort1, insort2:
it = iter(a)
s = []
print(timeit(lambda: insort(s, next(it)), number=len(a)))
print()
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue39801>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com