Bit全探索のベンチマーク
Bit全探索のベンチマーク
code:py
from itertools import product, compress, combinations
from timeit import timeit
tmp = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz":N data = tmp
def f1():
for selectors in product(range(2), repeat=N):
for _ in compress(data, selectors):
pass
def f2():
for r in range(N + 1):
for i in combinations(data, r):
for _ in i:
pass
def f3():
for i in range(1 << N):
for j in range(N):
if (i >> j) & 1:
pass
test_objects = {
}
for k, (v, f) in test_objects.items():
test_objectsk0 = timeit(f, number=10) res = sorted(test_objects.items(), key=lambda x: x10) _, (best, *_) = min(res, key=lambda x: x10) # print(best)
for seq, (k, (v, f)) in enumerate(res, 1):
display_string = f"#{seq}: {k}: {v:.3}s"
if seq > 1:
factor = v / best
display_string += f", {factor:.3}x slower than the best"
print(display_string)