快速Java优化问题

编程入门 行业动态 更新时间:2024-10-10 19:26:53
本文介绍了快速Java优化问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

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

Will the Eclipse compiler automatically convert multiplication by a power of two into a bit shift, or should I do that manually? Thanks for the help.

推荐答案

简短的答案:不。源代码编译器不会将一个乘法shift。

Short answer: No. The source code compiler won't replace a multiplication by two with a bit shift.

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

Long answer: It won't, because it can't know if a bit shift is faster than a multiplication on the platform the code eventually will be running. So, the question should rather be if a specific VM will replace the multiplication with a bit shift, and it probably will. I experimented a little bit with this to optimize a code block and it's interesting that Sun's Hotspot shows different behaviour here, depending on if the program runs on an AMD or on an Intel CPU (at least with the CPUs I tested). In either case, a multiplication with a power of two is replaced with a bit shift, but for multiplications with a power of two +/- 1 (3, 5, 7, 9, 15, 17, ...), Hotspot will generate a bit shift and an addition or a subtraction for Intel CPUs, while generating a multiplication for AMD CPUs, since the AMD CPU executes a multiplication much faster than the Intel CPU. It's of course possible, that this behaviour differs between different CPU models from each vendor.

如果你有兴趣知道VM实际上在做什么,获取jdk7的调试版本,并启用由Hotspot编译器生成的汇编代码转储。

If you are interested in knowing what the VM actually is doing, it is quite benefical to get the debug build of jdk7 and enable dumps of the assembler code generated by the Hotspot compiler.

更多推荐

快速Java优化问题

本文发布于:2023-11-29 06:58:47,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1645676.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:快速   Java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!