如果我在循环中多次调用代码,那么将索引包装在一个范围内的最快解决方案会更好吗?
int length = 4;
int firstIndex = 4;
int lastIndex = 7;
int currIndex = 4;
// Example 1 (if statement)
// Incrementing currIndex
if (++currIndex > lastIndex)
currIndex = firstIndex;
// Decrementing currIndex
if (--currIndex < firstIndex)
currIndex = lastIndex
// Example 2 (Modulo)
// Incrementing currIndex
currIndex = firstIndex + (++currIndex % length);
// Decrementing currIndex
currIndex = firstIndex + ((--currIndex + length) % length);
答案 0 :(得分:1)
它们可能非常接近,在实践中并不重要。如果你真的想要找到答案,请将每个方法包装在循环中,使其达到100,000或1M次并计时。
我的猜测是&#34;如果&#34;陈述会更快。它只有一个添加,还有一些比较和分支语句,这些语句是“便宜的”和#34;处理器中的指令。模数至少需要尽可能多的陈述,但需要更昂贵的陈述。