答えて
これは何かをしているからです。何かをするには時間がかかる。
例外をスローすると、オブジェクトが作成され、スタックのコピーが取得され、スタックが2回まで移動し、おそらくドメイン間でマーシャリングされます。物事をするのに時間がかかります。理想的な世界では、それが当てはまるかどうかわからないけれども、(それはあまりない可能性のある支店でなければならないので)取られていると予測されなかった支店にもなります。また、制御が「遠く」のどこかに移動したために、キャッシュが補充されている場合があります。
しかし、例外はデバッガで実行されている場合を除いて特に低速ではありません(明白な理由から、例外がスローされたときにもう一度動作します)。テストや試行やトリプル・レポートをより理にかなったループで試行錯誤をするほど遅いですが、これは良いマイクロ最適化のカテゴリに分類されます(「マイクロ最適化"という言葉はしばしばスラーとして使われますが、意味的に明快なアプローチが少し上手くいくと、その明快さの理由から、それは良いことです - それは数サイクルのために物事をあまり明確でなく意味的に賢明にするときです。 「ミクロ最適化」は負になります)。
例外スローのコストに影響を与えるものの1つは、コールスタック情報を持つかなり有益なExceptionオブジェクトです。これは、私たちのためにこのきちんとした情報を構築して保持するために、ある程度の時間とメモリスペースを必要とします。例えば、アンマネージC++は有益なコールスタックを持っていないので、C++でのデバッグはもっと複雑な作業です。
"例外があなたのパフォーマンスを大幅に損なうところになった場合、パフォーマンスだけではなく例外の使用に関して問題があります。" - Jon Skeet
つまり、例外的なケースであり、通常の制御フローではない場合、例外をスローするときのパフォーマンス上の不利益は問題ではありません。
- 1. ThreadPoolとメモリ(BTStackServer)例外 - .NET
- 2. .NET例外エクスプローラ
- 3. .net例外プール
- 4. .NET WCF例外
- 5. .NET - 例外スタックトレースラインが
- 6. ハッシュテーブルの.NET例外
- 7. .NET C/C++ P/INVOKE例外
- 8. .netでの例外処理。
- 9. 非同期.NETの例外
- 10. SQL Server 2008の.NET例外
- 11. .NET MVCコントローラの例外
- 12. MSMQ非同期例外動作 - .NET 4.0と.NET 2.0
- 13. Java例外とC++例外
- 14. nodejsファイルシステムと.net System.IOのパフォーマンス?
- 15. .NET用パフォーマンスと監視ツール
- 16. .NETタプルと同等のパフォーマンス
- 17. C#.NET 2の例外:外部コンポーネントが例外をスローしました
- 18. C++パフォーマンスの例と演算子の例
- 19. クルーズコントロール.Net例外書き込みmsbuild-results.xml
- 20. WinForms用ユーザーフレンドリー例外処理ライブラリ(.NET)
- 21. .NETでSQLのユニークキーの例外をキャッチ
- 22. Validationの例外処理.NETのベストプラクティス
- 23. .NET例外が発生しました。
- 24. .NET例外が多すぎます
- 25. IRTDUpdateEventを使用した.NET/COM例外
- 26. .NET Micro FrameworkのHTTP POST - 例外GetRequestStream()
- 27. .NETでアンマネージdll例外をキャッチ
- 28. ネットワーク共有上の.NETセキュリティ例外
- 29. 承認NET例外ラインアイテム1が無効
- 30. 。DocumentXPathNavigatorの.Net Null参照例外
これを確認してください:http://stackoverflow.com/questions/161942/how-slow-are-net-exceptions –