c++ - 减少for循环的时间

标签 c++

在我下面的代码中。我使用 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/

相关文章:

c++ - vector 订阅错误

c++ - Const 成员函数,当操作有明显的副作用时

c++ - UNIX 中的进程间通信

c# - 通过 C++ 64 位 dll 在 64 位 .net 应用程序中调用 PInvoke

c++ - 低于结构的运算符

c++ - 如何使用初始化列表初始化 unordered_map<string, unordered_set<string>> 成员?

python - shared_ptr<QCoreApplication> 崩溃

C++在将指针推回指针 vector 时获取临时地址

java - 等同于 Java 的 System.getProperty ("java.io.tmpdir") 在 C 中?

C++:获取参数包的头部和尾部