加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 没有JIT优化

发布时间:2020-12-15 04:12:12 所属栏目:Java 来源:网络整理
导读:看看 this question: 代码: class test{ public static void main(String abc[]) { for( int k=1; k=3; k++) { for( int N=1; N=1_000_000_000; N=N*10) { long t1 = System.nanoTime(); int j=1; for(int i=0; i=N; i++) j=j*i; long t2 = System.nanoTim
看看 this question:

代码:

class test
{
    public static void main(String abc[])
    {
        for( int k=1; k<=3; k++)
        {
            for( int N=1; N<=1_000_000_000; N=N*10)
            {
                long t1 = System.nanoTime();

                int j=1;
                for(int i=0; i<=N; i++)
                    j=j*i;

                long t2 = System.nanoTime() - t1;
                System.out.println("Time taken for "+ N + " : "+ t2);
            }
        }
    }
}

上面代码的输出:

Time taken for 1 : 2160
Time taken for 10 : 1142
Time taken for 100 : 2651
Time taken for 1000 : 19453
Time taken for 10000 : 407754
Time taken for 100000 : 4648124
Time taken for 1000000 : 12859417
Time taken for 10000000 : 13706643
Time taken for 100000000 : 136928177
Time taken for 1000000000 : 1368847843
Time taken for 1 : 264
Time taken for 10 : 233
Time taken for 100 : 332
Time taken for 1000 : 1562
Time taken for 10000 : 17341
Time taken for 100000 : 136869
Time taken for 1000000 : 1366934
Time taken for 10000000 : 13689017
Time taken for 100000000 : 136887869
Time taken for 1000000000 : 1368178175
Time taken for 1 : 231
Time taken for 10 : 242
Time taken for 100 : 328
Time taken for 1000 : 1551
Time taken for 10000 : 13854
Time taken for 100000 : 136850
Time taken for 1000000 : 1366919
Time taken for 10000000 : 13692465
Time taken for 100000000 : 136833634
Time taken for 1000000000 : 1368862705

在循环中,即使i的值从0开始,表示产品为零,也没有JIT优化.为什么不 ?
在上面提供的链接中,我之前将for循环放在JIT正在优化的方法调用中.是否将语句放在促进优化过程的方法中?

解决方法

>在上一个问题中,JIT优化了方法开始的完整代码,而没有任何分析在方法返回时变量中出现的数字.这是因为你选择使你的方法无效,给JIT一个简单的线索,任何计算出的值都将被丢弃. >将当前示例与上一个问题中的示例进行对比,没有调用void方法,因此自然不会进行优化.为什么没有其他优化可以帮助这个完全不同的案例是一个无法回答的问题.在specefic JVM实现和特定的JVM调用中没有这样的优化,您已经使用它来测试代码.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读