ソートされた配列のほうがプログラムの実行が速い?

このプログラムは、コメントのsortを実行するようにすると、速く動くようになる。なぜなのか?

答えは、パイプラインの分岐予測だそうです。分岐予測は以前の実行から分岐を予測してパイプラインを組むため、ソートされていれば分岐予測は成功し、実行が早くなる。

ソートしていないと、分岐予測が多く失敗し、予測して組み上げたパイプラインを破棄しなければならなくなり、実行が遅くなる。

上の部分を以下のように変えて、ifをなくす。

そうすると分岐予測はなくなって、ソートしててもしなくても、同じくらいの速度で実行される。

オリジナル
http://stackoverflow.com/questions/11227809/why-is-processing-a-sorted-array-faster-than-an-unsorted-array

Leave a Reply

Your email address will not be published. Required fields are marked *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)