0

次のコード スニペットの中で効率的なのはどれですか

for(int i=0; i<10; i++)
{
   try
   {
   ...
   }
   catch ()
   {
   ...
   }
}

また

try
   { 
   for(int i=0; i<10; i++)
    {
    ...
    }
   }
   catch ()
   {
   ...
   }
4

2 に答える 2

4

答えはほとんどの実装で「違いはありません」ですが、違いがあった場合for、ブロックに対して生成されたコードtry(存在する場合、および覚えておいてください、一般的にはありません)より多くの回数実行される予定です。

于 2012-05-14T11:38:14.437 に答える
1

通常、try-catchブロックはコンパイラの最適化の邪魔になります。たとえば、例外ハンドラーを導入した場合、ループ内で作成された一時的なものは、スコープが異なります(したがって、破棄のセマンティクスも異なります)。したがって、ループ内で例外処理を行う場合、一部またはすべてのループ最適化が行われない可能性があります。

于 2012-05-14T11:45:54.873 に答える