0

JDBC と Hibernate (JPA を使用) のパフォーマンスのベンチマークを行っており、同じクエリを連続して数回実行しています。最初のクエリ (JDBC と Hibernate の両方) が他のクエリよりも長く実行されることに気付きました。

mysql キャッシュを無効にしたので、mysql 固有のものではないと思います。それは可能性が?また、各 (HQL) クエリ間で EntityManager をクリアします。

最初のクエリが他のクエリよりも時間がかかる理由を教えてもらえますか?

ログ: http://pastebin.com/fwNbqaMD

ご回答ありがとうございます

4

2 に答える 2

1

以下は、考えられるいくつかの理由です。

  1. 接続プーリング。
  2. 準備されたステートメント。
  3. DB エンジンのウォームアップ / 初期化。

どちらの場合でも、最初の反復は残りよりも多くのことを行う必要があります。

たとえば、準備されたステートメントの場合、クエリ プランは最初に構築され、その後の実行で再利用するためにキャッシュされます。

于 2012-05-15T14:34:07.613 に答える
1

プログラムの実行時の最適化が原因だと思います。

各実行中に、コードのプロファイリング情報が収集され、JIT オプティマイザーが最適化を適用します。

于 2012-05-15T14:15:25.313 に答える