ContentsFoundations to FrontierBezhig

code/solutions/testing_lab.py

All lab code. Download this file.

"""C14.05: monotonic-clock measurements with explicit repetitions."""
import math
import statistics
import time
from collections.abc import Callable

def measure(operation: Callable[[], object], repeats: int = 9) -> dict:
    if type(repeats) is not int or repeats < 3:
        raise ValueError("at least three repetitions required")
    operation()  # warm-up, deliberately excluded from measurements
    samples = []
    last = None
    for _ in range(repeats):
        start = time.perf_counter_ns()
        last = operation()
        samples.append(time.perf_counter_ns() - start)
    return {"unit": "ns", "samples": samples,
            "median": statistics.median(samples), "last_result": last}

def nearest_rank(values: list[float], p: float) -> float:
    if not values or not 0 < p <= 1:
        raise ValueError("nonempty values and 0 < p <= 1 required")
    if any(not math.isfinite(x) for x in values):
        raise ValueError("finite values required")
    ordered = sorted(values)
    return ordered[math.ceil(p * len(ordered)) - 1]

if __name__ == "__main__":
    print(measure(lambda: sum(range(10000))))