Java位移操作真的比乘法快吗?

一直都有人说Java的位移运算比乘法快,所以我也一直信了,今天突然想起来了,就想试一试,不试不知道,一试吓一跳,原来信了这么长时间的知识,是假的!如有错误请指正。

代码

public class Java {

    public static void main(String[] args) {

        //测试位移操作
        long time=0;
        for (int r=0;r<100;r++){
            int i=1;
            long startTime=System.currentTimeMillis();
            for (long j=0L;j<5000000000L;j++){
                int k = i << 3;
            }
            long endTime=System.currentTimeMillis();
            time=endTime-startTime;
            System.out.println(time);

            //测试乘法操作
            i=1;
            startTime=System.currentTimeMillis();
            for (long j=0L;j<5000000000L;j++){
                int k = i * 8;
            }
            endTime=System.currentTimeMillis();
            time=endTime-startTime;
            System.out.println(time);
            System.out.println();
        }

    }
}

结果

2143
1656

1646
1654

1645
1640

1643
1690

1640
1640

1650
1649

1645
1647

1639
1652

1641
1651

1645
1643

1640
1659

1636
1643

1641
1639

1644
1644

1646
1638

1640
1636

1650
1639

1640
1642

1638
1640

1635
1639

1637
1649

1640
1641

1683
1642

1660
1639

1638
1643

1642
1636

1655
1639

1651
1664

1640
1640

1640
1636

1651
1643

1639
1643

试了之后除了第一次时间有点差距,后边的时间都差不多,所以我感觉是jvm做了优化。经过这次之后,看来别人的各种优化代码的手段也不能全信,还是需要自己试一试的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值