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:
Paul Sokolovsky 2014-06-19 21:54:51 +03:00
parent 17db096505
commit 59ced651b5
4 changed files with 48 additions and 0 deletions

View 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)

View 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)

View 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)

View 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)