顧客に技術的なサポートを行うとき、多くの顧客の異常がまったく見られます。これらの異常を排除した後、コードの実行速度は以前と比較して大幅に改善されました。これにより、コードに異常を使用すると、大きなパフォーマンスが頭上になると推測できます。異常は間違った状況の重要な部分であるため、放棄することは不可能であるため、パフォーマンスに対する異常な治療の影響を実験を通じて測定する必要があります。
実験
私の実験は、ランダムにスローする単純なコードに基づいています。科学的な観点からは、これは完全に正確な測定ではありません。同時に、実行中のコードで操作コードを行う方法がわかりません。しかし、いずれにせよ、このコードはいくつかの基本的な状況を理解できるはずです。
結果は非常に興味深いものです。異常を投げて捕捉するコストは非常に低いようです。私の例では、約0.02ミリ秒です。あなたが本当にあまりにも多くの異常を投げすぎない限り(私たちは100,000以上を意味します)、これは基本的に無視されます。 これらの結果は、異常な処理自体がコードのパフォーマンスに影響を与えないことを示していますが、次の問題を解決していません。パフォーマンスへの大きな影響の責任者は誰ですか?
私は明らかに重要な問題を逃しました。
もう一度考えた後、私は異常な治療の重要な部分を逃したことに気付きました。異常が起こったとき、私はあなたがしたことを考えませんでした。ほとんどの場合、あなたはおそらく異常を捉えるだけではありません!問題はここにあります。一般的に、問題を補完し、アプリケーションをエンドユーザーと一緒に再生させようとします。だから私が見逃したのは、異常を処理するための "" ""補足コード ""です。異なるコードによっては、パフォーマンスの損失が非常に重要になる場合があります。場合によっては、これはサーバーへの接続に焦点を合わせることを意味する場合があり、他の場合にはデフォルトのロールバックソリューションを使用することを意味する場合があり、このソリューションが提供するソリューションは間違いなく非常に悪いパフォーマンスをもたらします。これは、多くの場合に見られる行動について良い説明をしているようです。
しかし、私は分析がここにすべてであるとは思わないが、私はここで何か他のものが見逃されていると感じている。
スタックトレース
私はまだこの問題に興味があります。このため、ストラックトレースを収集するときにパフォーマンスがどのように変化するかを監視しました。
これは頻繁に起こる場合です。異常とそのスタックの軌跡を書き留めるには、問題がどこにあるかを調べてみてください。
このため、コードを変更し、異常なストラックトレースを収集しました。これにより、状況が大幅に変わりました。異常なストラックトレースの収集に対するパフォーマンス効果は、単に異常をキャプチャして投げるよりも10倍高くなっています。したがって、ストラックトレースは、問題が発生する場所を理解するのに役立ちますが(問題が発生する理由を理解するのに役立つ可能性があります)、パフォーマンスの損失があります。 私たちはストラックトレースについて話していないので、ここでの影響はしばしば非常に素晴らしいです。 ほとんどの場合、複数のレベルで異常を投げてキャプチャする必要があります。 簡単な例を見てみましょう。Webサービスクライアントはサーバーに接続されています。まず第一に、Javaライブラリレベルには異常があります。それ以来、フレームワークレベルに異常なクライアントが存在し、将来的にはアプリケーションレベルで異常なビジネスロジックコールが発生する可能性があります。これまで、合計3つのストラックトレースを収集する必要があります。 ほとんどの場合、ログファイルまたはアプリケーション出力からこれらのストラックトレースを見ることができ、これらの長いストラックトレースを作成することもパフォーマンス効果もあることがよくあります。
結論は
まず第一に、パフォーマンスの影響のため、異常な異常を破棄することは良くありません。珍しいのは、運用上の問題を解決し、クリーンなコードを書くのに役立つ一貫した方法を提供するのに役立ちます。ただし、コードにスローされた異常な量を追跡する必要があります。これにより、パフォーマンス効果が大きくなる可能性があります。したがって、ONEAPMは、デフォルトでスローされた異常を追跡する必要があります。多くの場合、これらの異常を解決する際のコードの異常とパフォーマンスの損失に人々は驚かされます。 第二に、使用することは非常に有益ですが、ストラックトレースが多すぎることも避ける必要があります。異常は異常な条件のために設計されるべきであり、この原則は使用する際に留意する必要があります。もちろん、良いプログラミング習慣に従いたくない場合は、Java言語では、そうすることでプログラムをより速く実行し、それを奨励できることをお知らせします。
上記は、この記事のすべての内容です。