クエリの 1 つのパフォーマンスに問題があり、jprofiler でプロファイリングした後、クエリ時間の 60% が nullSafeSet と nullSafeGet の呼び出しを含む joda の休止状態ライブラリにあることがわかりました。なぜそこに多くの時間を費やすのか、一生わからない。
取得中のドメイン オブジェクトには 2 つの DateTime 属性が含まれており、どちらも null の可能性があります。私が実行しているクエリ (1 ミリ秒未満) は、日付時刻の 1 つで等価性チェックを行い、それが null であり、他の日付では比較より小さいことを確認します。Jprofiler は nullSafeSet を 1 回呼び出し、nullSafeGet を 2 回呼び出します。nullSafeGet の実行には合計 19.7 ミリ秒かかり、nullSafeSet には 25.9 ミリ秒かかります。nullSafeSet が呼び出してほとんどの時間を費やすメソッドは でjava.sql.PreparedStatement.setTimestamp
あり、nullSafeGet 呼び出しの場合、時間は のコンストラクターで費やされorg.joda.time.convert.ConverterManager
ます。
この状況を改善する方法について誰か提案がありますか?!
下のスクリーンショットが役に立つかどうか、あるいは判読できるかどうかさえわかりません。これは、時間が費やされた場所と実行されているクエリを示す jprofiler からの出力です。