生S2DaoとDBFluteの検索処理パフォーマンスを比較してみた2

JOINありで生のS2DaoDBFluteの検索速度を比較。


環境、プロジェクト、データベースは「1」と同じです。

  • 検証対象、概要
    • MEMBERテーブルに以下のテーブルをJOINさせて検索(()内は件数)
      • MEMBER_STATUS(32770)
      • MEMBER_LOGIN(56)
      • MEMBER_SECURITY(20)
      • MEMBER_WITHDRAWAL(4)
    • 外だしSQL,Cursorは全て同じSQLを使用
    • 外だしSQLはsql2entityで自動生成したエンティティで結果を受け取る
    • S2Dao自動、DBFlute+CB、CursorはMemberエンティティで結果を受け取る
    • デバッグログは出さない
    • 結果の数値単位はms

結果!!(()内の数値はSQLの発行にかかった時間(ms))
・3件だけ検索(検索条件はMEMBER.MEMBER_ID)

実装構成初回2回目3回目4回目
S2Dao(自動)1593626262
S2Dao(外だしSQL)1500(1281)46(16)62(16)46(16)
DBFlute(CB)796(656)31(16)31(16)31(16)
DBFlute(外だしSQL)1546(1281)62(15)62(15)48(15)
DBFlute(Cursor)1390(1281)46(16)46(16)46(16)
・20057件検索(検索条件なしで検索)
実装構成初回2回目3回目4回目
S2Dao(自動)21500205782062520593
S2Dao(外だしSQL)12296(8891)10781(7922)10765(7922)10812(7922)
DBFlute(CB)19093(18687)18265(18078)18296(18078)18109(18078)
DBFlute(外だしSQL)10453(8891)8812(7922)8828(7922)8859(7922)
DBFlute(Cursor)10031(8891)8625(7922)8500(7922)8625(7922)
S2Dao(自動)の行だけ()がないのは自動生成されたSQLの発行部分のみで
どのくらい時間がかかっているかわからなかったためです。
(他はCusorをデバッグモードで出力してログにはかれていたものを書いています)