Skip to content

Commit 9f00af2

Browse files
authored
update benchmark.py
1 parent c9d76f0 commit 9f00af2

File tree

1 file changed

+32
-11
lines changed

1 file changed

+32
-11
lines changed

ulab_Crunch_Numbers_Fast/benchmark.py

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,21 @@
1-
import time
1+
import utime
22
import math
33
import ulab
44
import ulab.numerical
55

6+
def timeit(f, *args, **kwargs):
7+
func_name = str(f).split(' ')[1]
8+
def new_func(*args, **kwargs):
9+
t = utime.ticks_us()
10+
result = f(*args, **kwargs)
11+
print('execution time: ', utime.ticks_diff(utime.ticks_us(), t), ' us')
12+
return result
13+
return new_func
14+
615
def mean(values):
716
return sum(values) / len(values)
817

18+
@timeit
919
def normalized_rms(values):
1020
minbuf = int(mean(values))
1121
samples_sum = sum(
@@ -15,26 +25,37 @@ def normalized_rms(values):
1525

1626
return math.sqrt(samples_sum / len(values))
1727

28+
@timeit
1829
def normalized_rms_ulab(values):
1930
minbuf = ulab.numerical.mean(values)
2031
values = values - minbuf
2132
samples_sum = ulab.numerical.sum(values * values)
2233
return math.sqrt(samples_sum / len(values))
2334

2435

36+
@timeit
37+
def normalized_std_ulab(values):
38+
return ulab.numerical.std(values)
39+
40+
@timeit
41+
def normalized_std_ulab_iterable(values):
42+
return ulab.numerical.std(values)
43+
2544
# Instead of using sensor data, we generate some data
2645
# The amplitude is 5000 so the rms should be around 5000/1.414 = 3536
2746
nums_list = [int(8000 + math.sin(i) * 5000) for i in range(100)]
2847
nums_array = ulab.array(nums_list)
2948

30-
def timeit(s, f, n=100):
31-
t0 = time.monotonic_ns()
32-
for _ in range(n):
33-
x = f()
34-
t1 = time.monotonic_ns()
35-
r = (t1 - t0) * 1e-6 / n
36-
print("%-20s : %8.3fms [result=%f]" % (s, r, x))
37-
3849
print("Computing the RMS value of 100 numbers")
39-
timeit("traditional", lambda: normalized_rms(nums_list))
40-
timeit("ulab", lambda: normalized_rms_ulab(nums_array))
50+
51+
print('in python')
52+
normalized_rms(nums_list)
53+
54+
print('\nin ulab, with some implementation in python')
55+
normalized_rms_ulab(nums_array)
56+
57+
print('\nin ulab only, with ndarray')
58+
normalized_std_ulab(nums_array)
59+
60+
print('\nin ulab only, with list')
61+
normalized_std_ulab_iterable(nums_list)

0 commit comments

Comments
 (0)