Skip to content

Commit 73fccf5

Browse files
committed
tests/perf_bench: Add some viper performance benchmarks.
To test raw viper function call overhead: function entry, exit and conversion of arguments to/from objects.
1 parent 73c2694 commit 73fccf5

File tree

6 files changed

+114
-0
lines changed

6 files changed

+114
-0
lines changed

tests/perf_bench/viper_call0.py

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
@micropython.viper
2+
def f0():
3+
pass
4+
5+
@micropython.native
6+
def call(r):
7+
f = f0
8+
for _ in r:
9+
f()
10+
11+
bm_params = {
12+
(50, 10): (15000,),
13+
(100, 10): (30000,),
14+
(1000, 10): (300000,),
15+
(5000, 10): (1500000,),
16+
}
17+
18+
def bm_setup(params):
19+
return lambda: call(range(params[0])), lambda: (params[0] // 1000, None)

tests/perf_bench/viper_call1a.py

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
@micropython.viper
2+
def f1a(x):
3+
return x
4+
5+
@micropython.native
6+
def call(r):
7+
f = f1a
8+
for _ in r:
9+
f(1)
10+
11+
bm_params = {
12+
(50, 10): (15000,),
13+
(100, 10): (30000,),
14+
(1000, 10): (300000,),
15+
(5000, 10): (1500000,),
16+
}
17+
18+
def bm_setup(params):
19+
return lambda: call(range(params[0])), lambda: (params[0] // 1000, None)

tests/perf_bench/viper_call1b.py

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
@micropython.viper
2+
def f1b(x) -> int:
3+
return int(x)
4+
5+
@micropython.native
6+
def call(r):
7+
f = f1b
8+
for _ in r:
9+
f(1)
10+
11+
bm_params = {
12+
(50, 10): (15000,),
13+
(100, 10): (30000,),
14+
(1000, 10): (300000,),
15+
(5000, 10): (1500000,),
16+
}
17+
18+
def bm_setup(params):
19+
return lambda: call(range(params[0])), lambda: (params[0] // 1000, None)

tests/perf_bench/viper_call1c.py

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
@micropython.viper
2+
def f1c(x:int) -> int:
3+
return x
4+
5+
@micropython.native
6+
def call(r):
7+
f = f1c
8+
for _ in r:
9+
f(1)
10+
11+
bm_params = {
12+
(50, 10): (15000,),
13+
(100, 10): (30000,),
14+
(1000, 10): (300000,),
15+
(5000, 10): (1500000,),
16+
}
17+
18+
def bm_setup(params):
19+
return lambda: call(range(params[0])), lambda: (params[0] // 1000, None)

tests/perf_bench/viper_call2a.py

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
@micropython.viper
2+
def f2a(x, y):
3+
return x
4+
5+
@micropython.native
6+
def call(r):
7+
f = f2a
8+
for _ in r:
9+
f(1, 2)
10+
11+
bm_params = {
12+
(50, 10): (15000,),
13+
(100, 10): (30000,),
14+
(1000, 10): (300000,),
15+
(5000, 10): (1500000,),
16+
}
17+
18+
def bm_setup(params):
19+
return lambda: call(range(params[0])), lambda: (params[0] // 1000, None)

tests/perf_bench/viper_call2b.py

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
@micropython.viper
2+
def f2b(x:int, y:int) -> int:
3+
return x + y
4+
5+
@micropython.native
6+
def call(r):
7+
f = f2b
8+
for _ in r:
9+
f(1, 2)
10+
11+
bm_params = {
12+
(50, 10): (15000,),
13+
(100, 10): (30000,),
14+
(1000, 10): (300000,),
15+
(5000, 10): (1500000,),
16+
}
17+
18+
def bm_setup(params):
19+
return lambda: call(range(params[0])), lambda: (params[0] // 1000, None)

0 commit comments

Comments
 (0)