什么对速度模数或if语句更有效?

时间:2016-05-12 15:16:23

标签: java

如果我在循环中多次调用代码,那么将索引包装在一个范围内的最快解决方案会更好吗?

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);

1 个答案:

答案 0 :(得分:1)

它们可能非常接近,在实践中并不重要。如果你真的想要找到答案,请将每个方法包装在循环中,使其达到100,000或1M次并计时。

我的猜测是&#34;如果&#34;陈述会更快。它只有一个添加,还有一些比较和分支语句,这些语句是“便宜的”和#34;处理器中的指令。模数至少需要尽可能多的陈述,但需要更昂贵的陈述。