在我下面的代码中。我使用 chrono 高分辨率计时器来测量 for 循环 的完成时间。这个 for 循环是我程序的重要组成部分,我正在尝试优化它。我注意到的是下面的代码行导致时间增加
buffer[ Bcount]=NextState_chunk1;
而如果我将这一行替换为
buffer[ Bcount]=500;
时间减少到很大水平
完整代码:
int NextState_chunk1=0;
for( counter1=0; counter1< sizeof(chunk1); ++counter1)
{
IndexEntries &data=IndexTable[chunk1[counter1]][chunk1[counter1+1]];
DoubleTableEntries &GetValue=NewDoubleTable[NextState_chunk1][data.index];
NextState_chunk1= GetValue.Next_State;
++Bcount;
buffer[ Bcount]=NextState_chunk1;
++counter1;
}
请指出为什么会这样,我该如何避免这个问题?
注意:我只是替换了代码的倒数第二行。我没有删除代码行来衡量 next_state_chunk1 的值。
最佳答案
我敢猜测当你有
buffer[ Bcount]=500;
在 for 循环中,编译器能够优化掉循环中不需要的部分。它被简化为:
for( counter1=0; counter1< sizeof(chunk1); ++counter1)
{
++Bcount;
buffer[ Bcount]=500;
++counter1;
}
关于c++ - 减少for循环的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23173466/