[C / C ++]ループ効率

  C / C ++ループ文は、文の最も頻繁に第二の文ながら、ほとんど使用されていないステートメントを実行する、使用されています。このセクションでは、ループ本体の効率に焦点を当てています。ループ本体の効率を改善するための基本的な方法は、ループ本体の複雑さを軽減することです

  • 複数のループで[4-4-1]が可能な場合、最長の最も内側のループ内に配置する必要があり、推奨され、CPUサイクルの数を減らすため、最外層に最短サイクルは、剪断層を誇ります。
@ 非効率:最外層に長い循環
のための(行= 0、行< 100 ; ++ 行)
{
    (COL = 0、COL < 5 ; ++ COL)
    { + = [行] [COL]。
    }
}

// 高効率:最も内側のループ長
のために(COL = 0、COL < 5。 ; ++ COL)
{
    
    (列= 0、行< 100 ; ++ 行)
    { + = [行] [COL]。
    }
}
  • [4-4-2]推奨サイクルロジックもし体の存在を決定するため、及び多数のサイクル、論理判定がループ本体の外に移動しなければなりません。論理的判断、中断サイクル「パイプライン」動作のための複数回ので、コンパイラは効率を低下させる、処理サイクルを最適化することができないように。
// Nが非常に小さい場合、差の両方の効率が重要ではなく、そのようなアプローチの使用は非常に簡単に見える
ため(I = 0 ;私は<N; ++ I)
{
    もし(条件)
        doSomethingの();
    
        DoOtherthing();
}

// Nが非常に大きい場合、そのようなアプローチは、利用の効率向上させることができる
IF (条件条件の)を
{
    (i = 0 ; iがN <; ++ I)
        doSomethingの();
}

{
    (i = 0 ; iがN <; ++ I)
        DoOtherthing();
}

おすすめ

転載: www.cnblogs.com/bootblack/p/11782404.html