我是用Python的collection.deque玩耍,并写了下面的基准Python的双端队列性能:对于小iterables
#!/usr/bin/python
import timeit
if __name__=='__main__':
number = 1000000
for r in (1,10,100,1000,5000,10000,100000):
print r
print timeit.timeit("while x: x.pop(0);",
"x = list(range("+str(r)+"))",
number=number)
print timeit.timeit("while x: x.popleft();",
"from collections import deque; x = deque(range("+str(r)+"))",
number=number)
此时会弹出从列表/双端队列各种尺寸(0)/ popleft()。结果是:
1
0.0801048278809
0.0822219848633
10
0.081041097641
0.080836057663
100
0.0806250572205
0.0807700157166
1000
0.081248998642
0.082062959671
5000
0.0976719856262
0.0825741291046
10000
0.157499074936
0.0825819969177
100000
16.0247170925
0.097559928894
我的问题是:为什么是小双端和列表(约1000元)的表现几乎一样吗?
也许这与'import'语句不是免费的事实有关。 – 2010-01-16 12:58:55