首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运算符| vs operators+的性能

运算符| vs operators+的性能
EN

Stack Overflow用户
提问于 2011-06-02 03:38:49
回答 8查看 190关注 0票数 2

从长远来看,|和+之间有没有什么主要的区别会影响代码的性能?或者两者都是O(1)?我正在使用的代码是这样的:

代码语言:javascript
复制
uint64_t dostuff(uint64_t a,uint64_t b){
        // the max values of the inputs are 2^32 - 1

        // lots of stuff involving boolean operators
        // that have no way of being substituted by 
        // arithmetic operators

        return (a << 32) + b;
        //or
        return (a << 32) | b;
}

代码会被多次使用,所以我想尽可能地加快速度。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2011-06-02 03:41:47

在任何现代计算机上都没有性能差异。

不过,这两个运算符的含义不同。如果该位已设置,|将不执行任何操作,但+将清除该位和所有后续非零位,并将下一个零位设置为1。

票数 5
EN

Stack Overflow用户

发布于 2011-06-02 03:47:11

两者都是O(1),因为O(1)表示一个常数。它们可能不是相同的常量。Big Oh表示法旨在理解独立于常量的渐近行为。

哦对了还有一件事。在优化之前,一定要先配置文件。你很快就会发现时间并没有花在你想的地方。一直都是!

票数 3
EN

Stack Overflow用户

发布于 2011-06-02 03:43:20

使用|

+只能给操作时间加par显而易见的原因。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6206678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档