私はgcc 4.6.3を使用しており、ランダムショートの大きな配列を作成しています。私は次のステートメントでそれらを生成しています:
val = SHRT_MAX; //as defined by limits.h
while(array<end) {
*array++ = rand() % val;
}
これは非常に高速な操作であり、5,000,000 要素もの大きな配列の場合でも、ほぼ瞬時に完了します。数値の変動が小さい場合のソート効率に興味があり、それを次のように変更しました。
val = 3;
これにより、かなりの速度差が生じ、元のステートメントよりもはるかに遅くなりました。このような大きな速度差を引き起こしているのは何ですか?