我知道-过早的优化。
但是我的代码应该是用来判断一个位置和一个缓存的位置是否发生了变化。
当前代码为:
if(abs(newpos-oldpos) > 1){
    .....
}使用下面的代码会更有效吗?
if(abs(newpos-oldpos) != 0){
    ....
}为什么或者为什么不?我现在正在讨论我的想法,它更具可读性,我想知道是否有我遗漏的性能差异。
发布于 2009-07-09 18:54:47
为什么不是这个呢?
if (newpos != oldpos) {
    ...
}由于缺少abs(),因此比两者都更高效,而且引导更清晰。
发布于 2009-07-09 18:56:55
不改变的一个主要原因
(abs(newpos-oldpos) > 1)至
(abs(newpos-oldpos) != 0)它们在语义上是不同的。
当使用abs(newpos-oldpos) == 1时,你会得到不同的结果。这是一个例子,说明了为什么你应该“仅仅因为”而不愿意改变事情--除了这样一个事实,即无论如何都不会有可测量的性能差异(也可能也没有实际的差异)。
发布于 2009-07-09 18:56:54
如果去掉不必要的abs(),第二个方法会更有效。如果要与零进行比较,差异是正还是负都无关紧要。此外,我认为它更具可读性。然而,这两个条件似乎并不等价;如果abs(newpos-oldpos) == 1会发生什么?
https://stackoverflow.com/questions/1105817
复制相似问题