python中的排序速度始终不一致
我正在编写一个python程序来测试两个不同版本的quicksort。然后我决定将同一个版本与它本身进行比较,只是为了好玩。我非常惊讶地发现,每次我尝试它时,代码中较低的版本会更快。然后,我用python排序函数替换了我的零碎的快速排序实现。同样的趋势还在继续!有人知道这是为什么吗python中的排序速度始终不一致,python,sorting,python-3.x,Python,Sorting,Python 3.x,我正在编写一个python程序来测试两个不同版本的quicksort。然后我决定将同一个版本与它本身进行比较,只是为了好玩。我非常惊讶地发现,每次我尝试它时,代码中较低的版本会更快。然后,我用python排序函数替换了我的零碎的快速排序实现。同样的趋势还在继续!有人知道这是为什么吗 import random from time import clock randlist = lambda: [random.random() for i in range(random.randint(5, 1
import random
from time import clock
randlist = lambda: [random.random() for i in range(random.randint(5, 100))]
n = 10000
sum1 = 0
sum2 = 0
for i in range(n):
l = randlist()
before1 = clock()
sorted(l)
sum1 += clock() - before1
before2 = clock()
sorted(l)
sum2 += clock() - before2
print("first go ", sum1 / n)
print("'second go", sum2 / n)
此代码输出的以下内容基本相同:
first go 9.162100000000225e-06
second go 8.210699999999926e-06
我只是在我的机器上试过。我正在i7-2670QM上运行Ubuntu 14.04和Python 3.4
编辑:当两行都出来时,我发现同样的现象出现了!唯一的区别是,这两个时间都要低10倍。注意:这不是测试代码性能的正常方法。一个更好的方法是使用内置库,尤其是。该库经过专门设计和全面测试,以获得最佳精度。时间这很好,但要了解细节,请使用轮廓仪。Python有一个本机分析器。@iCodez我认为这就是问题所在。参见编辑-我假设OP只是想要一个总体估计。但是是的,一个剖析器也不错。参考:您使用的是存储在dict中的全局变量。可能是某些变量名导致哈希冲突,因此相应的变量访问速度会稍微慢一点。您可以通过交换正在计时的代码块来测试这一点。