我最近在编写一段代码,其中性能非常重要,基本上我有以下情况:
int len = some_very_big_number;
int counter = some_rather_small_number;
for( int i = len; i >= 0; --i ){
while( counter > 0 && costly other stuff here ){
/* do stuff */
--counter;
}
/* do more stuff */
}
Run Code Online (Sandbox Code Playgroud)
所以这里我有一个经常运行的循环,并且对于一定数量的运行,while块也将被执行,直到变量counter减少到零,然后不会调用while循环,因为第一个表达式将为false.
现在的问题是,如果使用
counter > 0和counter != 0?之间的性能有差异?
我怀疑会有,有没有人知道这方面的具体细节.
Ara*_*raK 19
你认为这将解决你的问题!:d
if(x >= 0)
00CA1011 cmp dword ptr [esp],0
00CA1015 jl main+2Ch (0CA102Ch) <----
...
if(x != 0)
00CA1026 cmp dword ptr [esp],0
00CA102A je main+3Bh (0CA103Bh) <----
Run Code Online (Sandbox Code Playgroud)
T.E*_*.D. 19
在编程中,以下陈述是指示地狱之路的标志:
我最近一直致力于一段代码,其中性能非常重要
以最干净,最容易理解的方式编写代码.期.
完成后,您可以测量其运行时间.如果花费的时间太长,请测量瓶颈,加快最大的瓶颈.继续这样做,直到它足够快.
由于错误地强调盲目优化而失败或遭受灾难性损失的项目清单是巨大而悲惨的.不要加入他们.