【发布时间】:2018-12-03 23:11:44
【问题描述】:
如何正确比较 Python 3.6 中 for 循环、列表解析和映射的性能?
在下面的代码中,普通的 for 循环执行得非常好(我使用 list() 从生成器获取值)。我在这里做错了吗?结果与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
更新:将元素添加到 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
【问题讨论】:
标签: python python-3.x performance benchmarking