-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbench.py
44 lines (37 loc) · 1.22 KB
/
bench.py
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
34
35
36
37
38
39
40
41
42
43
44
import itertools
import numpy as np
import pyperf
from src import opencv
from src import skimage
from src import rust
import inspect
from utils import get_public_functions
def prepare_image(height, width):
return np.random.randint(0, 256, (height, width, 3), dtype=np.uint8)
if __name__ == "__main__":
modules = [opencv, skimage, rust]
functions = list(
itertools.chain.from_iterable(
get_public_functions(module) for module in modules
)
)
image_sizes = [(2**i, 2**i) for i in range(4, 10)]
scale_factors = [2**i for i in range(1, 3)]
runner = pyperf.Runner()
for func, image_size, scale_factor in itertools.product(
functions, image_sizes, scale_factors
):
module_name = func.__module__.split(".")[-1]
image = prepare_image(*image_size)
runner.bench_func(
f"{module_name} {func.__name__} {image_size[0]}*{image_size[1]} x{scale_factor}",
func,
image,
scale_factor,
metadata=dict(
module=module_name,
func=func.__name__,
image_size=f"{image_size[0]}*{image_size[1]}",
scale_factor=scale_factor,
),
)