我试图解决以下问题:https://leetcode.com/problems/add-digits/
以下方法需要 12 毫秒才能完成所有测试:
int addDigits(int num) {
return 1+((num-1)%9);
}
而以下操作仅用了 8 毫秒:
int addDigits(int num) {
return ((num-1)%9)+1;
}
为什么当我在末尾而不是开头添加 1 时会有如此显着的差异?计算时我们应该总是把常量放在最后吗?
这是不可重现的。两个版本在多个编译器下生成完全相同的汇编代码。输出也与-O3
相同。
请参阅 https://godbolt.org/g/K6PZM5