diff options
| author | Paul Sokolovsky | 2014-05-05 01:24:16 +0300 |
|---|---|---|
| committer | Paul Sokolovsky | 2014-05-05 01:24:16 +0300 |
| commit | aaff82afe5a72ec69e05f1e56047d0acfde91d0e (patch) | |
| tree | 7bd8dc3cf156b790b66c05b2222bd362bdbce3d8 /tests/bench | |
| parent | 22a0d67c0fc7daf18280d3b7e938be8442102110 (diff) | |
tests: Add framework for comparative benchmarking.
Motivation is optimizing handling of various constructs as well as
understanding which constructs are more efficient in MicroPython.
More info: http://forum.micropython.org/viewtopic.php?f=3&t=77
Results are wildly unexpected. For example, "optimization" of range
iteration into while loop makes it twice as slow. Generally, the more
bytecodes, the slower the code.
Diffstat (limited to 'tests/bench')
| -rw-r--r-- | tests/bench/bench.py | 10 | ||||
| -rw-r--r-- | tests/bench/loop_count-1-range.py | 7 | ||||
| -rw-r--r-- | tests/bench/loop_count-2-range_iter.py | 7 | ||||
| -rw-r--r-- | tests/bench/loop_count-3-while_up.py | 8 | ||||
| -rw-r--r-- | tests/bench/loop_count-4-while_down_gt.py | 7 | ||||
| -rw-r--r-- | tests/bench/loop_count-5-while_down_ne.py | 7 | ||||
| -rw-r--r-- | tests/bench/var-1-constant.py | 8 | ||||
| -rw-r--r-- | tests/bench/var-2-global.py | 10 | ||||
| -rw-r--r-- | tests/bench/var-3-local.py | 10 | ||||
| -rw-r--r-- | tests/bench/var-4-arg.py | 9 |
10 files changed, 83 insertions, 0 deletions
diff --git a/tests/bench/bench.py b/tests/bench/bench.py new file mode 100644 index 000000000..0cd40a93f --- /dev/null +++ b/tests/bench/bench.py @@ -0,0 +1,10 @@ +import time + + +ITERS = 20000000 + +def run(f): + t = time.time() + f(ITERS) + t = time.time() - t + print(t) diff --git a/tests/bench/loop_count-1-range.py b/tests/bench/loop_count-1-range.py new file mode 100644 index 000000000..e22adf6cb --- /dev/null +++ b/tests/bench/loop_count-1-range.py @@ -0,0 +1,7 @@ +import bench + +def test(num): + for i in range(num): + pass + +bench.run(test) diff --git a/tests/bench/loop_count-2-range_iter.py b/tests/bench/loop_count-2-range_iter.py new file mode 100644 index 000000000..fe4a3857e --- /dev/null +++ b/tests/bench/loop_count-2-range_iter.py @@ -0,0 +1,7 @@ +import bench + +def test(num): + for i in iter(range(num)): + pass + +bench.run(test) diff --git a/tests/bench/loop_count-3-while_up.py b/tests/bench/loop_count-3-while_up.py new file mode 100644 index 000000000..1ab8054a0 --- /dev/null +++ b/tests/bench/loop_count-3-while_up.py @@ -0,0 +1,8 @@ +import bench + +def test(num): + i = 0 + while i < num: + i += 1 + +bench.run(test) diff --git a/tests/bench/loop_count-4-while_down_gt.py b/tests/bench/loop_count-4-while_down_gt.py new file mode 100644 index 000000000..de8dee2ca --- /dev/null +++ b/tests/bench/loop_count-4-while_down_gt.py @@ -0,0 +1,7 @@ +import bench + +def test(num): + while num > 0: + num -= 1 + +bench.run(test) diff --git a/tests/bench/loop_count-5-while_down_ne.py b/tests/bench/loop_count-5-while_down_ne.py new file mode 100644 index 000000000..b9a1af414 --- /dev/null +++ b/tests/bench/loop_count-5-while_down_ne.py @@ -0,0 +1,7 @@ +import bench + +def test(num): + while num != 0: + num -= 1 + +bench.run(test) diff --git a/tests/bench/var-1-constant.py b/tests/bench/var-1-constant.py new file mode 100644 index 000000000..eec977909 --- /dev/null +++ b/tests/bench/var-1-constant.py @@ -0,0 +1,8 @@ +import bench + +def test(num): + i = 0 + while i < 20000000: + i += 1 + +bench.run(test) diff --git a/tests/bench/var-2-global.py b/tests/bench/var-2-global.py new file mode 100644 index 000000000..5758ad61a --- /dev/null +++ b/tests/bench/var-2-global.py @@ -0,0 +1,10 @@ +import bench + +ITERS = 20000000 + +def test(num): + i = 0 + while i < ITERS: + i += 1 + +bench.run(test) diff --git a/tests/bench/var-3-local.py b/tests/bench/var-3-local.py new file mode 100644 index 000000000..124b48429 --- /dev/null +++ b/tests/bench/var-3-local.py @@ -0,0 +1,10 @@ +import bench + + +def test(num): + ITERS = 20000000 + i = 0 + while i < ITERS: + i += 1 + +bench.run(test) diff --git a/tests/bench/var-4-arg.py b/tests/bench/var-4-arg.py new file mode 100644 index 000000000..cf050c58f --- /dev/null +++ b/tests/bench/var-4-arg.py @@ -0,0 +1,9 @@ +import bench + + +def test(num): + i = 0 + while i < num: + i += 1 + +bench.run(lambda n:test(20000000)) |
