查看原文
其他

今日代码大赏 | 位运算代替乘除法

编程导航-南城余 程序员鱼皮 2024-04-08

在所有的运算中,位运算是最为高效的选择。

而位运算中最典型的情况就是针对整数的乘法和除法运算进行优化。

下面让我们一起欣赏下普通乘除算术运算和位运算在执行效率上的提升吧!

普通乘除算术运算示例代码:

@Test
public void test() {

    long start = System.currentTimeMillis();
    int a = 0;
    for(int i=0;i<1000000000;i++){
        a*=2;
        a/=2;
    }
    long useTime = System.currentTimeMillis()-start;
    System.out.println("useTime:"+useTime);
}

上面这段代码运行结果:useTime:1451

将循环体中的乘除运算改为等价的位运算,性能直接提升了100多倍!

位运算示例代码:

@Test
public void test(){
    long start = System.currentTimeMillis();
    int aa = 0;
    for (int i=0;i<1000000000;i++){
        aa<<=1;
        aa>>=1;
    }
    long useTime = System.currentTimeMillis()-start;
    System.out.println("useTime:"+useTime);
}

上面这段代码运行结果:useTime:10

上两段代码执行了完全相同的功能。

在每次循环中,都将整数乘以2,并除以2。

但是运行结果耗时相差确是100多倍。

所以位运算的效率还是显而易见的。




大家对今天的代码有什么看法呢?欢迎在评论区留言分享~

完整代码片段来源于代码小抄,欢迎点击进入小程序阅读!

在线访问:https://www.codecopy.cn/post/ji9prp

在代码小抄可以看到更多优质代码,也欢迎大家积极分享,可能会获得我们官方的小礼品 🎁~

往期推荐

今日代码大赏 | try-catch 优雅使用

今日代码大赏 | Guava 重试

今日代码大赏 | 后端跨域配置

今日代码大赏 | markdown 转纯文本

今日代码大赏 | Redisson 限流

继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存