import statistics import time def bench(func, *args, repeats=5, warmup=1): """Запускает func(*args) несколько раз и возвращает медиану и разброс, с.""" for _ in range(warmup): # прогрев: кэши, JIT, запуск пула func(*args) times = [] for _ in range(repeats): start = time.perf_counter() # монотонный таймер высокого разрешения func(*args) times.append(time.perf_counter() - start) return statistics.median(times), min(times), max(times)