C、C++の最適化について語るスレ 3
■ このスレッドは過去ログ倉庫に格納されています
0792デフォルトの名無しさん
2012/11/21(水) 02:51:13.42一回の計算あたりのクロック数は減らせても
アルゴリズムの計算量(オーダー)自体を少なくするわけではないから向かないよ
SIMD以外なら
・入力に偏りがあればバイナリサーチの分割点を調整することで速くなりそう
・値範囲がそれほど大きくないなら全範囲を展開したランクテーブルを表引き
例えば0-7の値範囲に対し[0,3,5,6]というランクテーブルを[0,0,0,1,1,2,3,3]と展開
・ >>786 が言うようにループアンロール
・バイナリサーチの範囲をMSB等で最初に絞る方法
例えばMSB4bitに対する上下範囲を16通り作っておいて、バイナリサーチの初期値にする。
■ このスレッドは過去ログ倉庫に格納されています