Luc*_*ano 4 c++ optimization comparison performance
我知道 - 过早优化.
但是我有代码可以找出一个位置是否与缓存位置相比发生了变化.
目前的代码是:
if(abs(newpos-oldpos) > 1){
.....
}
Run Code Online (Sandbox Code Playgroud)
使用以下内容更有效吗?
if(abs(newpos-oldpos) != 0){
....
}
Run Code Online (Sandbox Code Playgroud)
为什么或者为什么不?我目前正在讨论我的头脑,它更具可读性,并且想知道是否存在性能上的差异.
Noa*_*ing 13
为什么不呢?
if (newpos != oldpos) {
...
}
Run Code Online (Sandbox Code Playgroud)
由于缺乏abs()
和更清晰的启动,比两者都更有效.
Mic*_*urr 13
不改变的主要原因
(abs(newpos-oldpos) > 1)
Run Code Online (Sandbox Code Playgroud)
至
(abs(newpos-oldpos) != 0)
Run Code Online (Sandbox Code Playgroud)
是他们在语义上是不同的.
当abs(newpos-oldpos) == 1
你得到不同的结果.这就是为什么你不愿意仅仅因为"改变事物"的一个例子 - 除了事实上不会有任何可衡量的表现差异(也可能没有实际差异).