summaryrefslogtreecommitdiffstatshomepage
path: root/tests/bench/funcall-3-funcall-local.py
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-06-19 03:20:34 +0300
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-06-19 20:49:03 +0300
commite53d2197e4a749b2e2265c7b42f9b9834128799f (patch)
tree91ce001dabfd672b41f061cc42f2ac98e67c6bf7 /tests/bench/funcall-3-funcall-local.py
parentb0851e5949b4d241106f130bc9febb9a5ff0acb6 (diff)
downloadmicropython-e53d2197e4a749b2e2265c7b42f9b9834128799f.tar.gz
micropython-e53d2197e4a749b2e2265c7b42f9b9834128799f.zip
bench: Add test for function call overhead.
For a trivial operation, calling a function is 5 times slower than doing operation inline.
Diffstat (limited to 'tests/bench/funcall-3-funcall-local.py')
-rw-r--r--tests/bench/funcall-3-funcall-local.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/tests/bench/funcall-3-funcall-local.py b/tests/bench/funcall-3-funcall-local.py
new file mode 100644
index 0000000000..1a6d728c63
--- /dev/null
+++ b/tests/bench/funcall-3-funcall-local.py
@@ -0,0 +1,16 @@
+# Function call overhead test
+# Perform the same trivial operation as calling function, cached in a
+# local variable. This is commonly known optimization for overly dynamic
+# languages (the idea is to cut on symbolic look up overhead, as local
+# variables are accessed by offset, not by name)
+import bench
+
+def f(x):
+ return x + 1
+
+def test(num):
+ f_ = f
+ for i in iter(range(num)):
+ a = f_(i)
+
+bench.run(test)