File: count_samples.py

package info (click to toggle)
python-pyinstrument 5.1.1%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,620 kB
  • sloc: python: 6,713; ansic: 897; makefile: 46; sh: 20; javascript: 18
file content (33 lines) | stat: -rw-r--r-- 846 bytes parent folder | download
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)