summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien George <damien@micropython.org>2022-02-11 13:42:00 +1100
committerDamien George <damien@micropython.org>2022-02-11 13:42:00 +1100
commita434705700c18544edbbcabc714a5bf507847eb4 (patch)
tree8a5c33ec13378883dcb43999f05fca36e5998fdd
parent75da124cf856d020efb17efbcba97543c5e7435c (diff)
tests/perf_bench: Add perf test for yield-from execution.
Signed-off-by: Damien George <damien@micropython.org>
-rw-r--r--tests/perf_bench/core_yield_from.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/perf_bench/core_yield_from.py b/tests/perf_bench/core_yield_from.py
new file mode 100644
index 000000000..2f6930e2b
--- /dev/null
+++ b/tests/perf_bench/core_yield_from.py
@@ -0,0 +1,31 @@
+# Test a deep set of "yield from" statements.
+
+
+def recursive_yield_from(depth, iter_):
+ if depth <= 0:
+ for i in iter_:
+ yield i
+ else:
+ yield from recursive_yield_from(depth - 1, iter_)
+
+
+def test(n):
+ global result
+ result = 0
+ for i in recursive_yield_from(10, range(n)):
+ result += i
+
+
+###########################################################################
+# Benchmark interface
+
+bm_params = {
+ (100, 10): (2000,),
+ (1000, 10): (20000,),
+ (5000, 10): (100000,),
+}
+
+
+def bm_setup(params):
+ (nloop,) = params
+ return lambda: test(nloop), lambda: (nloop // 100, result)