私は自分のコードをプロファイリングし、可能な限りすべてを最適化して、次のような関数にたどり着きました:
double func(double a, double b, double c, double d, int i){
if(i > 10 && a > b || i < 11 && a < b)
return abs(a-b)/c;
else
return d/c;
}
プログラムの実行中に何百万回も呼び出され、プロファイラーは、すべての時間の約 80% が の呼び出しに費やされていることを示していabs()
ます。
に置き換え
abs()
たfabs()
ところ、約 10% の速度向上が得られましたが、浮動小数点数については同じであり、常に使用する必要があると何度も聞いたので、あまり意味がありませんabs()
。それは真実ではありませんか、それとも何かが欠けていますか?パフォーマンスをさらに向上させることができる double の絶対値を評価する最も簡単な方法は何ですか?
それが問題になる場合はg++
、Linux X86_64 で使用します。