プログラミングで非常に一般的なパターンは、ある種の更新後に最大値を制限することです。私が知りたいのは、次の2つのコードに違いがあるかどうか、そして1つを優先する必要があるかどうかです。
value += increment;
value = std::min(value, valueMax);
vs
value += increment;
if (value > valueMax)
value = valueMax;
私の考えでは、これはCPUが2つの値を取り、最小値を生成するための命令を持っているかどうかにかかっていると思います。その場合、std :: minを呼び出すと、この命令が生成され、不要な分岐が回避されます。そうでない場合、2番目のバージョンはvalue<=valueMaxのときに不要な割り当てを回避します。
私はこの種のことはあまり得意ではありませんが、これを知っている古い学校のアセンブリハッカーがいると確信しています。彼らに私は尋ねます:どちらが良いですか?