bpo-37229: Add compare_function to bisect functions by FortStatement · Pull Request #13970 · python/cpython (original) (raw)
@asvetlov I'm not sure what were the original concerns, but I checked this PR and the key
PR (#11781) with timeit, compare_function is extremely slightly, yet consistently, faster.
timeit -s "from bisect import bisect
class C:
def __init__(self, n):
self.n = n
data = [C(n) for n in range(1_000_000)]
cmp = C(25)" "bisect(data, cmp, key=lambda x: x.n)"
50000 loops, best of 5: 6.93 usec per loop
timeit -s "from bisect import bisect
class C:
def __init__(self, n):
self.n = n
data = [C(n) for n in range(1_000_000)]
cmp = C(25)" "bisect(data, cmp, compare_function=lambda a,b: a.n < b.n)"
50000 loops, best of 5: 6.79 usec per loop
I think this is a rather fair comparison.
Anyway, the real issue is syntax compatibility, which I think is subjective.