JVM的字节码到底是编译型还是解释型呢? 都是, 因为JVM有三种不同的运行模式, 分别是
1, 解释型
2, 编译型
3, 混合型
分别使用参数配置执行, 下面使用程序进行一下不同模式下, 程序的执行效率
/**
* 功能说明:三种不同运行模式下的执行效率
* 解释执行: -Xint result=...ms(多半分钟没看到结果, 小马哥不看了)
* 编译执行: -Xcomp result=40ms
* 混合执行: -Xmixed result=9ms
* 开发人员:@author MaLi
*/
public class T03_RunningMode {
//定义执行循环的次数
private static int _1Million = 1000000;
public static void main(String[] args) {
long start = System.currentTimeMillis();
int mainResult = 0;
//循环调用100万次 doSom()函数
for (int i = 0; i < _1Million; i++) {
mainResult += doSom();
}
System.out.println(mainResult);
long end = System.currentTimeMillis();
System.out.println("Time wasted: " + (end - start) + "ms");
}
public static int doSom() {
int result = 0;
//计算100万次加法
for (int i = 0; i < _1Million; i++) {
result++;
}
return result;
}
}
关于如何配置参数
1, 在命令行中, 执行java -jar直接跟上-Xint , -Xcomp, -Xmixed三者只一的参数;
2, 在IDE中举例配置如图
2.1 在代码窗口右键, 对运行进行配置
2.2 如果没有VM的配置输入框, 要在如图位置打钩添加上VM Options, 然后填入JVM参数
分别对三种模式进行测试, 发现效率还是有明显差别, JVM默认的混合运行模式, 在该程序中看是最优选择. 执行效果的结果在代码注释中.