从长远来看,|和+之间有没有什么主要的区别会影响代码的性能?或者两者都是O(1)?我正在使用的代码是这样的:
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;
}代码会被多次使用,所以我想尽可能地加快速度。
发布于 2011-06-02 03:41:47
在任何现代计算机上都没有性能差异。
不过,这两个运算符的含义不同。如果该位已设置,|将不执行任何操作,但+将清除该位和所有后续非零位,并将下一个零位设置为1。
发布于 2011-06-02 03:47:11
两者都是O(1),因为O(1)表示一个常数。它们可能不是相同的常量。Big Oh表示法旨在理解独立于常量的渐近行为。
哦对了还有一件事。在优化之前,一定要先配置文件。你很快就会发现时间并没有花在你想的地方。一直都是!
发布于 2011-06-02 03:43:20
使用|。
+只能给操作时间加par显而易见的原因。
https://stackoverflow.com/questions/6206678
复制相似问题