7

実際にC#でリアルタイムプログラミングを行っている人、または言語の内部を本当に理解している人からの返信をお願いします。

例外は通常の処理を処理するために使用するのではなく、エラー状態を検出するためにのみ使用する必要があることを私は知っています。そのトピックについてはたくさんの議論があります。

try / catchブロックを配置するだけで実行時間が遅くなるかどうかを知りたいです(プログラムを終了する必要がない限り、例外をキャッチすることはありません)。try / catchブロックは、繰り返し呼び出す必要のある関数内にあります。最小限のコストしかないと思います。

コストは、CPUサイクル、その他のタスク(浮動小数点乗算と同じコスト)、または別の方法で定量化できますか?

Windows XPではMicrosoftC#.Net3.5を使用しています。

4

2 に答える 2

11

.NET例外は、スローされない限り、オーバーヘッドコストが非常に低くなります。try / catchブロックを配置すると、パフォーマンスへの影響はごくわずかになります。非常に高速でタイトなループであっても、例外処理を実行してもほとんど影響はありません。

ただし、.NETの例外は、スローされると非常にコストがかかります。他の多くの言語よりも投げると、パフォーマンスに大きな影響を与える傾向があります。これは、例外が作成されたときに収集されたフルスタック情報などによるものです。

これは、Pythonなどの他の言語とは逆の動作であり、例外処理のコストは高くなりますが、スローは実際にはかなりパフォーマンスが高くなります。

ただし、懸念がある場合は、ルーチンのプロファイルを作成し、自分でテストすることをお勧めします。これは、かなりのパフォーマンスプロファイリングの後の私の経験です。独自のコードベースで測定することに代わるものはありません。

于 2009-08-28T15:49:37.583 に答える
1

ここで、try catchのパフォーマンスへの影響について、メトリックを使用して適切に説明します。

例外がスローされない場合、try / catchブロックはパフォーマンスを低下させますか?

于 2009-08-28T15:57:29.627 に答える