Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有二次幂的变量值会产生多大的性能差异?_Java_Performance_Optimization - Fatal编程技术网

Java 具有二次幂的变量值会产生多大的性能差异?

Java 具有二次幂的变量值会产生多大的性能差异?,java,performance,optimization,Java,Performance,Optimization,或者,对于包括移动设备在内的现代CPU来说,这种差异是否无关紧要?假设你有一百万个左右的变量。这可能没什么区别 在典型的处理器上,算术指令占用相同的时间,与值无关。。。模硬件异常。(如果类型不同,可能需要不同的时间,但这是另一回事。) 两个值的幂更快的唯一可能的情况是,所讨论的值是常数,并且您正在进行整数乘法或除法运算。在这种情况下,JIT编译器可能会将乘法或除法操作转换为移位操作。然而,这只会发生在(JIT)编译时常量中 (JIT是否真正做到这一点取决于相对指令时间和JIT优化器的复杂程度。)

或者,对于包括移动设备在内的现代CPU来说,这种差异是否无关紧要?假设你有一百万个左右的变量。

这可能没什么区别

在典型的处理器上,算术指令占用相同的时间,与值无关。。。模硬件异常。(如果类型不同,可能需要不同的时间,但这是另一回事。)

两个值的幂更快的唯一可能的情况是,所讨论的值是常数,并且您正在进行整数乘法或除法运算。在这种情况下,JIT编译器可能会将乘法或除法操作转换为移位操作。然而,这只会发生在(JIT)编译时常量中


(JIT是否真正做到这一点取决于相对指令时间和JIT优化器的复杂程度。)

这在很大程度上取决于您的代码。JIT很可能会删除您的大部分想法。请澄清:您是在问是否应该预计算功率值并将其存储在列表中;vs.“总是”计算它们?@Jägermeister——我想他是在问,对数字
8
进行任何数学运算是否会比对
9
进行同样的运算快。这很难区分,而且可能因操作而异。机器不是按位运行的。它们按每个登记册运作。因此,2个整数加法运算将花费相同的时间,无论它们是否为2的幂。这一切都是关于打开/关闭晶体管的。正如其他人提到的,JIT可能会优化代码,以防其中一个操作数的幂为2,而您正在进行乘法或除法运算