分岐を 2 つの乗算に置き換えるか、または (キャッシュ ミスのペナルティにより) 置き換えない方が速いのだろうか?
これが私のケースです:
float dot = rib1.x*-dir.y + rib1.y*dir.x;
if(dot<0){
dir.x = -dir.x;
dir.y = -dir.y;
}
そして、私はそれを次のものに置き換えようとしています:
float dot = rib1.x*-dir.y + rib1.y*dir.x;
int sgn = (dot < 0.0) - (0.0 < dot ); //returns -1 or 1 (no branching here, tested)
dir.x *= sgn;
dir.y *= sgn;