在调用声明为的Java方法时,JVM运行时必须执行的常规步骤是native什么?
HotSpot 1.8.0 JVM如何实现JNI函数调用?涉及哪些检查步骤(例如返回后未处理的异常?),JVM要执行哪些簿记(例如本地参考注册表?),以及在调用本机Java方法后控制在哪里?如果有人可以提供本机HotSpot 1.8.0代码的入口点或重要方法,我也将不胜感激.
免责声明:我知道我可以自己阅读代码,但事先的解释有助于快速找到我的代码.此外,我发现这个问题值得谷歌搜索.;)
我已经做了一些关于x*x或Math.pow(x,2)在Java中是否更快的测试.我期待简单的x*x有点快,但事实证明它的速度相当快.有人可以开导我,请问这有可能吗?
我在不同版本的Java中运行了以下程序.
final double[] values = new double[10000];
final long start = System.currentTimeMillis();
double sum = 0;
for (int i = 0; i < values.length; i++)
sum += Math.pow(values[i], 2);
final long elapsed = System.currentTimeMillis() - start;
System.out.println("Time elapse :: " + elapsed);
Run Code Online (Sandbox Code Playgroud)
Java 7:输出
时间流逝:: 1
Java 8:输出
时间流逝:: 7
为什么Java 8中的性能问题与7相比?