Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的排序速度始终不一致_Python_Sorting_Python 3.x - Fatal编程技术网

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

我正在编写一个python程序来测试两个不同版本的quicksort。然后我决定将同一个版本与它本身进行比较,只是为了好玩。我非常惊讶地发现,每次我尝试它时,代码中较低的版本会更快。然后,我用python排序函数替换了我的零碎的快速排序实现。同样的趋势还在继续!有人知道这是为什么吗

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中的全局变量。可能是某些变量名导致哈希冲突,因此相应的变量访问速度会稍微慢一点。您可以通过交换正在计时的代码块来测试这一点。