测试JIT对执行性能的影响

JIT java即时编译

即时编译 可以使java达到类似c的效率

测试源码

废话不多说直接上代码

public class JITTest {
    public static void main(String[] args) throws InterruptedException {
        if(args==null||args.length<1){
            return;
        }
        int loopNum=Integer.parseInt(args[0]);
        
        long start = System.currentTimeMillis();
        
        for (int i = 0; i < loopNum; i++) {
            myMethod();
        }
        
        long useTime = System.currentTimeMillis() - start;
        
        System.out.println(String.format("use time:%sms",useTime));
    }
    
    //测试的方法
    public static void myMethod(){
        int i=0;
    }
}

效果对比(执行myMethod 1000w次)

#先编译文件
javac JITTest.java

#解释执行
[root@zcy testjvm]# java -Xint JITTest 10000000
use time:609ms

#编译执行
[root@zcy testjvm]# java -Xcomp JITTest 10000000
use time:18ms

现代的物理机安装jdk 默认都运行于server(mixed)模式,
可以通过java -version 查看

#默认
[root@zcy testjvm]# java -version
java version “1.8.0_201”
Java™ SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot™ 64-Bit Server VM (build 25.201-b09, mixed mode)

#解释执行模式
[root@zcy testjvm]# java -Xint -version
java version “1.8.0_201”
Java™ SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot™ 64-Bit Server VM (build 25.201-b09, interpreted mode)

#编译执行模式
[root@zcy testjvm]# java -Xcomp -version
java version “1.8.0_201”
Java™ SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot™ 64-Bit Server VM (build 25.201-b09, compiled mode)

关于server 还是 client 涉及到使用C1 还是C2 编译

另外何时触发编译涉及两个计数器

  • 方法调用计数器 (针对方法调用)
  • 回边计数器(针对方法内的循环代码块)

当两计数器相加之和超过设定阈值就会触发即使编译

相关参数

参数解释
PrintCompilation是否对编译结果进行打印
CompileThreshold方法调用计数器阈值
OnStackReplacePercentage回边调用计数器阈值通过该参数结合其他参数进行设定
UseCounterDecay方法调用计数器是否开启半衰周期
CounterHalfLifeTime方法调用计数器半衰周期时长(单位s)
BackgroundCompilation是否使用后台线程进行编译
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值