summaryrefslogtreecommitdiffstatshomepage
path: root/tests/perf_bench
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2019-06-26 14:27:32 +1000
committerDamien George <damien.p.george@gmail.com>2019-06-28 16:30:01 +1000
commit73fccf59672c7087d6290bb036fe5c72899086b6 (patch)
tree88583d9a7a9924299dea594ae8c8cf16d7c61830 /tests/perf_bench
parent73c269414f41dac87122963dc1fc456442de8b85 (diff)
downloadmicropython-73fccf59672c7087d6290bb036fe5c72899086b6.tar.gz
micropython-73fccf59672c7087d6290bb036fe5c72899086b6.zip
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.
Diffstat (limited to 'tests/perf_bench')
-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 0000000000..0f476b127b
--- /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 0000000000..2bb4a28fd3
--- /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 0000000000..cda64007fe
--- /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 0000000000..c653eb8d3e
--- /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 0000000000..6204f985f9
--- /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 0000000000..087cf8ab0c
--- /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)