from time import time
def swap(L):
for i in xrange(1000000):
for b, a in enumerate(L):
L[a], L[b] = L[b], L[a]
def main():
start = time()
L = list(reversed(range(100)))
swap(L[:])
print time() - start
return L
if __name__ == "__main__":
print len(main())
# for shedskin:
# shedskin -b -r -e listswap.py && make
# python -c "import listswap; print len(listswap.main())"
看起来Python编译器使用以下构造优化了临时元组:
代码:
输出:
两次加载,a^{} ,两次保存,而不是三次加载和三次保存。你不可能找到更快的机制。
如果你能发布一个有代表性的代码示例,我们可以更好地对你的选项进行基准测试。FWIW,对于下面这个愚蠢的基准测试,我用Shed Skin得到大约3倍的加速,用PyPy得到大约10倍的加速。
我发现这种方法是交换两个数字的最快方法:
相关问题 更多 >
编程相关推荐