diff options
author | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2014-06-19 21:54:51 +0300 |
---|---|---|
committer | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2014-06-19 22:19:24 +0300 |
commit | 59ced651b542941f893293099a932252e498eb7c (patch) | |
tree | 378111b20480786296796d793b48830c5af6b33c /tests/bench | |
parent | 17db09650569609793061e83aded7039e39e81a7 (diff) | |
download | micropython-59ced651b542941f893293099a932252e498eb7c.tar.gz micropython-59ced651b542941f893293099a932252e498eb7c.zip |
bench: Add test for map() vs inplace operations in array-likes.
map() is 5 times slower. That's mostly because of inefficiency of creating
containers from iterables of unknown length (like map()).
Diffstat (limited to 'tests/bench')
-rw-r--r-- | tests/bench/arrayop-1-list_inplace.py | 12 | ||||
-rw-r--r-- | tests/bench/arrayop-2-list_map.py | 12 | ||||
-rw-r--r-- | tests/bench/arrayop-3-bytearray_inplace.py | 12 | ||||
-rw-r--r-- | tests/bench/arrayop-4-bytearray_map.py | 12 |
4 files changed, 48 insertions, 0 deletions
diff --git a/tests/bench/arrayop-1-list_inplace.py b/tests/bench/arrayop-1-list_inplace.py new file mode 100644 index 0000000000..0ee1ef2eca --- /dev/null +++ b/tests/bench/arrayop-1-list_inplace.py @@ -0,0 +1,12 @@ +# Array operation +# Type: list, inplace operation using for. What's good about this +# method is that it doesn't require any extra memory allocation. +import bench + +def test(num): + for i in iter(range(num//10000)): + arr = [0] * 1000 + for i in range(len(arr)): + arr[i] += 1 + +bench.run(test) diff --git a/tests/bench/arrayop-2-list_map.py b/tests/bench/arrayop-2-list_map.py new file mode 100644 index 0000000000..9d5095c53a --- /dev/null +++ b/tests/bench/arrayop-2-list_map.py @@ -0,0 +1,12 @@ +# Array operation +# Type: list, map() call. This method requires allocation of +# the same amount of memory as original array (to hold result +# array). On the other hand, input array stays intact. +import bench + +def test(num): + for i in iter(range(num//10000)): + arr = [0] * 1000 + arr2 = list(map(lambda x: x + 1, arr)) + +bench.run(test) diff --git a/tests/bench/arrayop-3-bytearray_inplace.py b/tests/bench/arrayop-3-bytearray_inplace.py new file mode 100644 index 0000000000..a6d6280705 --- /dev/null +++ b/tests/bench/arrayop-3-bytearray_inplace.py @@ -0,0 +1,12 @@ +# Array operation +# Type: bytearray, inplace operation using for. What's good about this +# method is that it doesn't require any extra memory allocation. +import bench + +def test(num): + for i in iter(range(num//10000)): + arr = bytearray(b"\0" * 1000) + for i in range(len(arr)): + arr[i] += 1 + +bench.run(test) diff --git a/tests/bench/arrayop-4-bytearray_map.py b/tests/bench/arrayop-4-bytearray_map.py new file mode 100644 index 0000000000..1b92a40961 --- /dev/null +++ b/tests/bench/arrayop-4-bytearray_map.py @@ -0,0 +1,12 @@ +# Array operation +# Type: list, map() call. This method requires allocation of +# the same amount of memory as original array (to hold result +# array). On the other hand, input array stays intact. +import bench + +def test(num): + for i in iter(range(num//10000)): + arr = bytearray(b"\0" * 1000) + arr2 = bytearray(map(lambda x: x + 1, arr)) + +bench.run(test) |