标签: c++ performance optimization operators mod
我试图解决以下问题: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而不是开头时会有这么大的差异?我们是否应该在计算时将常量放在最后?
答案 0 :(得分:0)
这是不可重复的。两个版本在几个编译器下生成完全相同的汇编代码。输出也与-O3相同。
-O3
请参阅https://godbolt.org/g/K6PZM5