1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
import time
import pyinstrument
def do_nothing():
pass
def busy_wait(duration: float):
start = time.time()
while time.time() - start < duration:
do_nothing()
def count_samples(duration: float, interval: float, use_timing_thread: bool):
profiler = pyinstrument.Profiler(interval=interval, use_timing_thread=use_timing_thread)
profiler.start()
busy_wait(duration)
session = profiler.stop()
reference = duration / interval
sample_count = len(session.frame_records)
print(f"Interval: {interval}, use_timing_thread: {use_timing_thread}")
print(
f"Expected samples: {reference}, actual samples: {sample_count}, {sample_count / reference:.2f}x"
)
count_samples(0.1, 0.001, False)
count_samples(0.1, 0.001, True)
count_samples(0.1, 0.0001, False)
count_samples(0.1, 0.0001, True)
|