gpt4 book ai didi

java - 快速 Java 优化问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:02:50 25 4
gpt4 key购买 nike

Eclipse 编译器会自动将乘以 2 的幂转换为位移位,还是我应该手动转换?感谢您的帮助。

最佳答案

简短回答:否。源代码编译器不会用移位替换乘以 2。

长答案:它不会,因为它无法知道在代码最终将运行的平台上位移位是否比乘法快。所以,问题应该是一个特定的 VM 是否会用移位代替乘法,它可能会。我对此进行了一些实验以优化代码块,有趣的是 Sun 的 Hotspot 在这里显示了不同的行为,这取决于程序是在 AMD 还是 Intel CPU 上运行(至少对于我测试的 CPU 而言)。在任何一种情况下,2 的幂的乘法都被移位替换,但是对于 2 +/- 1(3、5、7、9、15、17,...)的幂的乘法,Hotspot 将为 Intel CPU 生成移位和加法或减法,同时为 AMD CPU 生成乘法,因为 AMD CPU 执行乘法比 Intel CPU 快得多。当然,这种行为可能因每个供应商的不同 CPU 型号而异。

如果您有兴趣了解 VM 实际在做什么,获取 jdk7 的调试版本并启用 Hotspot 编译器生成的汇编代码的转储是非常有益的。

关于java - 快速 Java 优化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1514949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com