java - 速度模或 if 语句哪个更有效?

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

最佳答案

它们可能非常接近,在实践中并不重要。如果您确实想找到答案,请将每种方法包装在一个循环中,执行 100,000 或 1M 次并计时。

我的猜测是“if”语句会更快。它只有一个加法,以及一对比较和分支语句,这些语句是处理器中的“廉价”指令。模数至少需要同样多的语句,但成本更高。

关于java - 速度模或 if 语句哪个更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37191099/

相关文章:

java - Couchbase 客户端 (Java) IllegalStateException - 检查对象有效性

java - 在密封类上的when表达式中使用 `is`是否会在运行时导致反射?

javascript - Servlet 过滤器不允许在 jsp 文件中上传指向 js 库的链接

java - 如何在 java SWT 组合框中填充美国各州?

java - 为什么第二次运行后才出现 "Try a higher/lower number."?

java - 调用方法时出现 IOException 错误

java - 接受任何字母、任何语言、符号或数字的任何编译的正则表达式

java - sql 和使用 spring 注入(inject)属性哪个更好

java - onActivityCreated/onStart/onViewCreated 方法中的 getView() 出现 NullPointerException 警告

java - Rest FB 在 Servlet 中抛出异常