How is it possible to properly compare performance of for loops, list comprehensions and maps in Python 3.6?
In the code below, plain old for loops perform quite well (I used list()
to get values from generators). Am I doing something wrong here? The results are in stark contrast to the discussion on Python 2.
import timeit
code_for = """
for i in range(1000):
hex(i)
"""
code_map = """
list(map(hex, range(1000)))
"""
code_map_lambda = """
list(map(lambda x: hex(x), range(1000)))
"""
code_list_comprehension = """
[hex(x) for x in range(1000)]
"""
print(timeit.timeit(code_for, number=10000))
# 1.1155821208376437
print(timeit.timeit(code_map, number=10000))
# 0.8820606248918921
print(timeit.timeit(code_map_lambda, number=10000))
# 1.7510833400301635
print(timeit.timeit(code_list_comprehension, number=10000))
# 1.1798800542019308
UPDATE: Adding elements to a list in code_for
code_for_2 = """
a = [0] * 1000
for i in range(1000):
a[i] = hex(i)
"""
# 1.243549756007269
code_for_3 = """
a = []
for i in range(1000):
a.append(hex(i))
"""
# 1.5462996119167656