第一种情况:
void lowTermReduction(int numerator, int denominator) {
int gcd = GCD(numerator, denominator);
numerator /= gcd;
denominator /= gcd;
}
第二种情况:
void lowTermReduction(int numerator, int denominator) {
int gcd = GCD(numerator, denominator);
if (gcd != 1) {
numerator /= gcd;
denominator /= gcd;
}
}
哪一个更高效(快速)?
在第一种情况下,函数总是执行除法,如果这个除法是 1 并且不改变 和 中的numerator
值denominator
。我不知道 CPU 在执行 12/1 还是 12/2 时是否更快,但我认为这完全一样。
相反,在第二种情况下,该函数仅在大公约数相差 1 时才进行除法。但在这种情况下,它执行的是逻辑运算if
。
有效率差异吗?如果是这样,它们是否相关?