Java API中有许多内在函数的方法,但在查看源代码时仍然有与它们相关的代码。
例如,Integer.bitCount()是一个内在函数,但如果打开Integer类文件,则可以看到代码。
如果编译器/ jvm不一定使用此代码,那么该代码可以用于什么目的?
答案 0 :(得分:10)
根据wiki,Intrinsic
函数的定义如下:
在编译器理论中,内部函数是可用的函数 用于处理其实现的给定编程语言 特别是由编译器。通常,它代替一系列的 自动生成原始函数调用的指令, 类似于内联函数。不像内联函数, 编译器对内在函数有深入的了解并且可以 因此,更好地整合它并针对这种情况进行优化。这个 在许多语言中也被称为内置函数。
进一步说,这对您的问题很重要且相关:
实现内部函数的编译器通常会启用它们 只有当用户请求优化时,才会回退到 语言运行时环境提供的默认实现 否则。
因此,这意味着在大多数情况下都会使用默认实现,直到不请求或不可能进行优化(这取决于运行JVM的计算机/配置)。 JVM可以将整个Integer.bitCount()
代码替换为优化的机器代码指令。
此外,请检查此discussion,这可以很好地解释示例代码。
答案 1 :(得分:5)
如果不可能使用内在版本,则提供默认实现,即在没有提供内在版本的平台上运行。
答案 2 :(得分:-2)
在编译器理论中,固有函数是可用于给定编程语言的函数,其实现由编译器专门处理。通常,它将一系列自动生成的指令替换为原始函数调用,类似于内联函数。