検索処理のパフォーマンスを更に比較してみた

前の日記「検索処理のパフォーマンスを比較してみた」の続きです。


DBFlute 0.8.1が昨日(10/10)リリースされたので
これについてもパフォーマンスを比較してみました(.NET版のみ)。
Behavior+CBによる検索が大幅に高速化されています。


動作環境はDBFluteをバージョン0.8.1に
変更した以外は前回の日記と同じです。
検証データも同様のものを使用しています。


結果は以下のようになりました。
単位は ms です。
比較のために前バージョン、ADO直たたきの計測結果も載せておきます。
(前の日記と同じ)
検索件数1件(主キーを条件に検索)







実装パターン初回2回目3回目4回目
DBFlute(Bhv+CB)0.8.0859311515
DBFlute(Bhv+CB)0.8.1843151515
DBFlute(外出しSQL+cursor)0.8.01280626262
DBFlute(外出しSQL+cursor)0.8.11328464646
ADO + CB45315015
ADO + SQLベタ375000
検索件数20013件(MEMBER_STATUS_CODEを条件に検索)





実装パターン初回2回目3回目4回目
DBFlute(Bhv+CB)0.8.04670381038403810
DBFlute(Bhv+CB)0.8.12973199919792005
DBFlute(外出しSQL+cursor)0.8.02680145014301420
DBFlute(外出しSQL+cursor)0.8.12703143714371437
ADO + CB1930151515001500
ADO + SQLベタ1810143014601460
グラフにするとこんな感じ。


1件検索の場合はそれほど変化はありませんが

Bhv+CBで20000件検索をした場合では他の実装パターンの処理時間に

かなり近づいてきています。



今回のDBFlute更新内容の一つ

(DBFLUTE-343){Java/C#}: 検索結果マッピング時のEntityの生成をリフレクションレスに

などのチューニングがかなり効いているものと思われます。



今回はMEMBERテーブル単品を対象にしており、

外部結合した場合などは試していません。

Bhv+CBの場合は外部結合したテーブルについても考慮しているはずなので

それらも含めればまた違った結果が出るかもしれません。