検索処理のパフォーマンスを更に比較してみた
前の日記「検索処理のパフォーマンスを比較してみた」の続きです。
DBFlute 0.8.1が昨日(10/10)リリースされたので
これについてもパフォーマンスを比較してみました(.NET版のみ)。
Behavior+CBによる検索が大幅に高速化されています。
動作環境はDBFluteをバージョン0.8.1に
変更した以外は前回の日記と同じです。
検証データも同様のものを使用しています。
結果は以下のようになりました。
単位は ms です。
比較のために前バージョン、ADO直たたきの計測結果も載せておきます。
(前の日記と同じ)
○検索件数1件(主キーを条件に検索)
実装パターン | 初回 | 2回目 | 3回目 | 4回目 |
DBFlute(Bhv+CB)0.8.0 | 859 | 31 | 15 | 15 |
DBFlute(Bhv+CB)0.8.1 | 843 | 15 | 15 | 15 |
DBFlute(外出しSQL+cursor)0.8.0 | 1280 | 62 | 62 | 62 |
DBFlute(外出しSQL+cursor)0.8.1 | 1328 | 46 | 46 | 46 |
ADO + CB | 453 | 15 | 0 | 15 |
ADO + SQLベタ | 375 | 0 | 0 | 0 |
実装パターン | 初回 | 2回目 | 3回目 | 4回目 |
DBFlute(Bhv+CB)0.8.0 | 4670 | 3810 | 3840 | 3810 |
DBFlute(Bhv+CB)0.8.1 | 2973 | 1999 | 1979 | 2005 |
DBFlute(外出しSQL+cursor)0.8.0 | 2680 | 1450 | 1430 | 1420 |
DBFlute(外出しSQL+cursor)0.8.1 | 2703 | 1437 | 1437 | 1437 |
ADO + CB | 1930 | 1515 | 1500 | 1500 |
ADO + SQLベタ | 1810 | 1430 | 1460 | 1460 |
1件検索の場合はそれほど変化はありませんが
Bhv+CBで20000件検索をした場合では他の実装パターンの処理時間に
かなり近づいてきています。
今回のDBFluteの更新内容の一つ
(DBFLUTE-343){Java/C#}: 検索結果マッピング時のEntityの生成をリフレクションレスに
などのチューニングがかなり効いているものと思われます。
今回はMEMBERテーブル単品を対象にしており、
外部結合した場合などは試していません。
Bhv+CBの場合は外部結合したテーブルについても考慮しているはずなので
それらも含めればまた違った結果が出るかもしれません。