我想知道,当我在Reddit 线程中发现问题时,为什么要Math.sin(double)
委托。提到的代码片段如下所示(JDK 7u25):StrictMath.sin(double)
数学.java:
public static double sin(double a) {
return StrictMath.sin(a); // default impl. delegates to StrictMath
}
严格数学.java:
public static native double sin(double a);
第二个声明native
对我来说是合理的。的文档Math
指出:
鼓励代码生成器在可用的情况下使用特定于平台的本机库或微处理器指令(...)
问题是:实现StrictMath
平台特定的本机库还不够吗?JIT 对平台的了解比已安装的 JRE 还多(请只关注这种情况)?换句话说,为什么不是Math.sin()
原生的呢?