大佬教程收集整理的这篇文章主要介绍了JVM什么时候使用内在函数,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
答案很简单:以这种方式定义内在函数,因为存在一种更快,本机的方法来获取函数结果,并且可以在指定映射的情况下使用该方法。
那根本与编译无关。@H_675_5@Integer.bitCount在实现被标记为可替换为本地asm指令POPCNT的意义上,它是特殊的。基本上,在使用@H_675_5@Integer.bitCount函数时(如果cpu支持该指令)使用此本机指令,当您声明函数的自己副本时,将使用常规实现。
为什么JVM能够识别出功能可以优化?因为它是硬编码的地方在JDK中,有无关相似的代码。
为什么将某些代码模式(当存在于JVM内部类中时)转换为内在函数,而将相同的模式从我自己的类中调用时却不是。
从Integer中调用bitCount函数时,bitCount(i)将转换为内部函数。但是,当复制到我的班级然后调用时,执行将花费更长的时间。
比较
@H_675_5@Integer.bitCount(i) MyClass.bitCount(i) public static int bitCount(int i) { // HD,Figure 5-2 i = i - ((i >>> 1) & 0x55555555); i = (i & 0x33333333) + ((i >>> 2) & 0x33333333); i = (i + (i >>> 4)) & 0x0f0f0f0f; i = i + (i >>> 8); i = i + (i >>> 16); return i & 0x3f; }
以上是大佬教程为你收集整理的JVM什么时候使用内在函数全部内容,希望文章能够帮你解决JVM什么时候使用内在函数所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。