Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemathinc
GitHub Repository: sagemathinc/wapython
Path: blob/main/python/bench/src/bench.py
1067 views
1
# mypy
2
from typing import Callable
3
4
5
def time(name: str, f: Callable, *args) -> int:
6
from time import time as time0
7
t = time0()
8
try:
9
f(*args)
10
except:
11
print("\n**WARNING: there was an error running", name, "**\n")
12
return int((time0() - t) * 1000)
13
14
15
benchmarks = []
16
17
18
def register(name: str, f: Callable) -> None:
19
global benchmarks
20
benchmarks.append((name, f))
21
22
23
def reset() -> None:
24
benchmarks.clear()
25
26
27
def all(desc: str = '') -> None:
28
print("-" * 20)
29
print("Running...", desc)
30
t = 0
31
for (name, f) in benchmarks:
32
s = time(name, f)
33
t += s
34
print(name, s, "ms")
35
print("Total: ", t, "ms")
36
37