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()).
This commit is contained in:
parent
17db096505
commit
59ced651b5
12
tests/bench/arrayop-1-list_inplace.py
Normal file
12
tests/bench/arrayop-1-list_inplace.py
Normal file
@ -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)
|
12
tests/bench/arrayop-2-list_map.py
Normal file
12
tests/bench/arrayop-2-list_map.py
Normal file
@ -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)
|
12
tests/bench/arrayop-3-bytearray_inplace.py
Normal file
12
tests/bench/arrayop-3-bytearray_inplace.py
Normal file
@ -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)
|
12
tests/bench/arrayop-4-bytearray_map.py
Normal file
12
tests/bench/arrayop-4-bytearray_map.py
Normal file
@ -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)
|
Loading…
Reference in New Issue
Block a user