次のコード スニペットの中で効率的なのはどれですか
for(int i=0; i<10; i++)
{
try
{
...
}
catch ()
{
...
}
}
また
try
{
for(int i=0; i<10; i++)
{
...
}
}
catch ()
{
...
}
次のコード スニペットの中で効率的なのはどれですか
for(int i=0; i<10; i++)
{
try
{
...
}
catch ()
{
...
}
}
また
try
{
for(int i=0; i<10; i++)
{
...
}
}
catch ()
{
...
}
答えはほとんどの実装で「違いはありません」ですが、違いがあった場合for
、ブロックに対して生成されたコードtry
(存在する場合、および覚えておいてください、一般的にはありません)より多くの回数実行される予定です。
通常、try
-catch
ブロックはコンパイラの最適化の邪魔になります。たとえば、例外ハンドラーを導入した場合、ループ内で作成された一時的なものは、スコープが異なります(したがって、破棄のセマンティクスも異なります)。したがって、ループ内で例外処理を行う場合、一部またはすべてのループ最適化が行われない可能性があります。