aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien George2019-06-26 14:27:32 +1000
committerDamien George2019-06-28 16:30:01 +1000
commit73fccf59672c7087d6290bb036fe5c72899086b6 (patch)
tree88583d9a7a9924299dea594ae8c8cf16d7c61830
parent73c269414f41dac87122963dc1fc456442de8b85 (diff)
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.
-rw-r--r--tests/perf_bench/viper_call0.py19
-rw-r--r--tests/perf_bench/viper_call1a.py19
-rw-r--r--tests/perf_bench/viper_call1b.py19
-rw-r--r--tests/perf_bench/viper_call1c.py19
-rw-r--r--tests/perf_bench/viper_call2a.py19
-rw-r--r--tests/perf_bench/viper_call2b.py19
6 files changed, 114 insertions, 0 deletions
diff --git a/tests/perf_bench/viper_call0.py b/tests/perf_bench/viper_call0.py
new file mode 100644
index 000000000..0f476b127
--- /dev/null
+++ b/tests/perf_bench/viper_call0.py
@@ -0,0 +1,19 @@
+@micropython.viper
+def f0():
+ pass
+
+@micropython.native
+def call(r):
+ f = f0
+ for _ in r:
+ f()
+
+bm_params = {
+ (50, 10): (15000,),
+ (100, 10): (30000,),
+ (1000, 10): (300000,),
+ (5000, 10): (1500000,),
+}
+
+def bm_setup(params):
+ return lambda: call(range(params[0])), lambda: (params[0] // 1000, None)
diff --git a/tests/perf_bench/viper_call1a.py b/tests/perf_bench/viper_call1a.py
new file mode 100644
index 000000000..2bb4a28fd
--- /dev/null
+++ b/tests/perf_bench/viper_call1a.py
@@ -0,0 +1,19 @@
+@micropython.viper
+def f1a(x):
+ return x
+
+@micropython.native
+def call(r):
+ f = f1a
+ for _ in r:
+ f(1)
+
+bm_params = {
+ (50, 10): (15000,),
+ (100, 10): (30000,),
+ (1000, 10): (300000,),
+ (5000, 10): (1500000,),
+}
+
+def bm_setup(params):
+ return lambda: call(range(params[0])), lambda: (params[0] // 1000, None)
diff --git a/tests/perf_bench/viper_call1b.py b/tests/perf_bench/viper_call1b.py
new file mode 100644
index 000000000..cda64007f
--- /dev/null
+++ b/tests/perf_bench/viper_call1b.py
@@ -0,0 +1,19 @@
+@micropython.viper
+def f1b(x) -> int:
+ return int(x)
+
+@micropython.native
+def call(r):
+ f = f1b
+ for _ in r:
+ f(1)
+
+bm_params = {
+ (50, 10): (15000,),
+ (100, 10): (30000,),
+ (1000, 10): (300000,),
+ (5000, 10): (1500000,),
+}
+
+def bm_setup(params):
+ return lambda: call(range(params[0])), lambda: (params[0] // 1000, None)
diff --git a/tests/perf_bench/viper_call1c.py b/tests/perf_bench/viper_call1c.py
new file mode 100644
index 000000000..c653eb8d3
--- /dev/null
+++ b/tests/perf_bench/viper_call1c.py
@@ -0,0 +1,19 @@
+@micropython.viper
+def f1c(x:int) -> int:
+ return x
+
+@micropython.native
+def call(r):
+ f = f1c
+ for _ in r:
+ f(1)
+
+bm_params = {
+ (50, 10): (15000,),
+ (100, 10): (30000,),
+ (1000, 10): (300000,),
+ (5000, 10): (1500000,),
+}
+
+def bm_setup(params):
+ return lambda: call(range(params[0])), lambda: (params[0] // 1000, None)
diff --git a/tests/perf_bench/viper_call2a.py b/tests/perf_bench/viper_call2a.py
new file mode 100644
index 000000000..6204f985f
--- /dev/null
+++ b/tests/perf_bench/viper_call2a.py
@@ -0,0 +1,19 @@
+@micropython.viper
+def f2a(x, y):
+ return x
+
+@micropython.native
+def call(r):
+ f = f2a
+ for _ in r:
+ f(1, 2)
+
+bm_params = {
+ (50, 10): (15000,),
+ (100, 10): (30000,),
+ (1000, 10): (300000,),
+ (5000, 10): (1500000,),
+}
+
+def bm_setup(params):
+ return lambda: call(range(params[0])), lambda: (params[0] // 1000, None)
diff --git a/tests/perf_bench/viper_call2b.py b/tests/perf_bench/viper_call2b.py
new file mode 100644
index 000000000..087cf8ab0
--- /dev/null
+++ b/tests/perf_bench/viper_call2b.py
@@ -0,0 +1,19 @@
+@micropython.viper
+def f2b(x:int, y:int) -> int:
+ return x + y
+
+@micropython.native
+def call(r):
+ f = f2b
+ for _ in r:
+ f(1, 2)
+
+bm_params = {
+ (50, 10): (15000,),
+ (100, 10): (30000,),
+ (1000, 10): (300000,),
+ (5000, 10): (1500000,),
+}
+
+def bm_setup(params):
+ return lambda: call(range(params[0])), lambda: (params[0] // 1000, None)