-1

error-return 値を持つ try-catch のすべての例外処理コードを削除すると、コード実行で一定のパフォーマンス向上または % パフォーマンス向上が見られますか?

最初のスロー、try-catch のコスト、およびその後のスロー、try-catch ブロックのコストを説明する優れた記事/参考文献はありますか?

  • この質問の目的は、例外よりもエラーを返すスタイルのコーディングに進む可能性のあるしきい値を見つけることではありません。私たちは皆、それが面倒であることを知っています。(高速ですが面倒です)。

  • 私は、try-catch のコストとその影響を、0 から 1 の try-catch ブロックと 1 から n の try catch ブロックについて定量化しようとしています。

4

2 に答える 2

1

これは、コンパイラと ABI に完全に依存します。答えは 1 つではありません。

投げなくても少しコストがかかる可能性があります。たとえば、setjmp/longjmp 実装は VC++ で使用されます。一般に、これは目に見えないほど些細なコストですが、それでも存在します。

ゼロコストの例外を持つことも可能です。つまり、スローするまで無料です。これは通常、例外を適切に使用するコードに適しています (それらをまれに保ち、... 例外的にします)。

例外は、明らかな C スタイルのエラー処理よりもさらに安価になる可能性があります。スマート コンパイラは、catchブロックがまれになることを認識し、それらを個別のキャッシュ ラインまたはページに追いやることで、「ホットな」非例外コードが可能な限り近くに保たれるようにします。

于 2013-02-24T08:00:24.567 に答える
0

パフォーマンスへの影響は、例外のスローとキャッチの実装によって異なります。

たとえば、__try __exceptSSH 例外に使用すると、「通常の」try catch ブロックとは異なるオーバーヘッドが発生します。

自分で確認したい場合は、システムで自分でベンチマークしてください。

例外の本当の「悪」は、プログラムの「通常の」流れを壊すという事実です。

これにより、プログラムが未定義の状態になることがよくあります (プログラマーがどれだけうまく処理したかによって異なります)。

于 2013-02-24T07:56:08.490 に答える