この投稿では、ソートされた配列をランダム配列よりも高速に処理する理由について、ブランチ予測がソートされた配列のパフォーマンス向上の理由であると述べています。
しかし、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'