在这篇文章为什么排序数组的处理速度比随机数组快中,提到分支预测是排好序的数组性能优化的原因。
但我刚刚用Python试了一下这个例子;我认为排序和随机数组没有区别(我尝试了bytearray和array;使用line_profile来分析计算)。
我是否遗漏了什么?
这是我的代码:
但我刚刚用Python试了一下这个例子;我认为排序和随机数组没有区别(我尝试了bytearray和array;使用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()
。 - Jeremy Roman