【C/C++】循环语句的效率

  C/C++循环语句中,for语句使用频率最高,while语句其次,do语句很少用。本节重点讨论循环体的效率。提高循环体效率的基本办法是降低循环体的复杂性

  • 【建议4-4-1】在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU夸切循环层的次数。
//低效率:长循环在最外层
for (row = 0; row < 100; ++row)
{
    for (col = 0; col < 5; ++col)
    {
        sum += a[row][col];
    }
}

//高效率:长循环在最内层
for (col = 0; col < 5; ++col)
{
    
    for (row = 0; row < 100; ++row)
    {
        sum += a[row][col];
    }
}
  • 【建议4-4-2】如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。由于多次要进行逻辑判断,打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。
//如果N非常小,两者效率差别并不明显,但是采用这种写法看上去非常简洁
for (i = 0; i < N; ++i)
{
    if (condition)
        DoSomething();
    else
        DoOtherthing();
}

//如果N非常大,采用这种写法可以提高效率
if (condition)
{
    for (i = 0; i < N; ++i)
        DoSomething();
}
else
{
    for (i = 0; i < N; ++i)
        DoOtherthing();
}

猜你喜欢

转载自www.cnblogs.com/bootblack/p/11782404.html