【发布时间】:2012-10-02 07:17:45
【问题描述】:
在这篇 Why is processing a sorted array faster than random array 的帖子中,它说分支预测是排序数组中性能提升的原因。
但我只是尝试了使用 Python 的示例;而且我认为排序数组和随机数组之间没有区别(我尝试了 bytearray 和数组;并使用 line_profile 来分析计算)。
我错过了什么吗?
这是我的代码:
from array import array
import random
array_size = 1024
loop_cnt = 1000
# I also tried 'array', and it's almost the same
a = bytearray(array_size)
for i in xrange(array_size):
a.append(random.randint(0, 255))
#sorted
a = sorted(a)
@profile
def computation():
sum = 0
for i in xrange(loop_cnt):
for j in xrange(size):
if a[j] >= 128:
sum += a[j]
computation()
print 'done'
【问题讨论】:
-
sorted(a)返回另一个已排序的列表,但不会修改a。甚至要让代码按照你的想法去做,你必须使用a = sorted(a),或者更好的是a.sort()。 -
您可能想在此处查看 python 的结果stackoverflow.com/a/18419405/1903116
-
stackoverflow.com/q/11227809/3145716 查错。这可能会有所帮助。
-
python 使用 timsort 可能会产生一些影响...fwiw.
-
@rogerdpack:排序算法无关紧要;所有稳定的算法都会产生相同的结果。排序时间在这里没有描述。
标签: python performance