最初のケース:
void lowTermReduction(int numerator, int denominator) {
int gcd = GCD(numerator, denominator);
numerator /= gcd;
denominator /= gcd;
}
2 番目のケース:
void lowTermReduction(int numerator, int denominator) {
int gcd = GCD(numerator, denominator);
if (gcd != 1) {
numerator /= gcd;
denominator /= gcd;
}
}
どちらがより効率的 (高速) ですか?
最初のケースでは、関数は常にnumerator
除算を実行します。この除算が 1 で、との値を変更しない場合も同様ですdenominator
。12/1 と 12/2 のどちらが CPU の方が速いかはわかりませんが、まったく同じだと思います。
2 番目のケースでは、代わりに、関数は大公約数が 1だけ異なる場合にのみ除算を行います。ただし、この場合は論理演算を実行しますif
。
効率の違いはありますか?もしそうなら、それらは適切ですか?