【发布时间】:2015-03-18 16:52:04
【问题描述】:
python -m timeit "tuple(xrange(600000))"
100 次循环,3 次中的最佳:每个循环 11.5 毫秒
python -m timeit "list(xrange(600000))"
100 个循环,3 个循环中的最佳:每个循环 10.1 毫秒
将它们与dis 模块进行比较:
>>> from dis import dis
>>> dis(lambda: tuple(xrange(600000)))
0 LOAD_GLOBAL 0 (tuple)
3 LOAD_GLOBAL 1 (xrange)
6 LOAD_CONST 1 (600000)
9 CALL_FUNCTION 1
12 CALL_FUNCTION 1
15 RETURN_VALUE
>>> dis(lambda: list(xrange(600000)))
0 LOAD_GLOBAL 0 (list)
3 LOAD_GLOBAL 1 (xrange)
6 LOAD_CONST 1 (600000)
9 CALL_FUNCTION 1
12 CALL_FUNCTION 1
15 RETURN_VALUE
【问题讨论】:
-
这相差太小了,真的。但是列表是动态数组,元组是固定大小的,所以后者首先需要一个精确的大小。
标签: python performance list tuples python-internals