JDBC、S2JDBC、S2Dao、JPA(Hibernate)、Domaのパフォーマンス比較 その3
S2JDBCがパフォーマンスチューニングをしたということなので、もう一度パフォーマンス比較をしてみました。測定方法は前回と同様、1プロセス内で同じ処理を3回実行して最後の値を取る(最適化された状態で計測するために)、ということをそれぞれのテストケースで3回実行して真ん中の値を使っています。
コードや使用しているライブラリはリポジトリにあります。
https://www.seasar.org/svn/sandbox/doma/trunk/or-mapper-benchmark/
SQLファイルに記述されたSELECT文を使って10000件検索
19,364,522 (nanoTime) : DomaSqlFileSelectDtoTest 39,396,294 (nanoTime) : S2DaoSqlFileSelectDtoTest 12,013,783 (nanoTime) : S2JdbcSqlFileSelectDtoTest
自動的に組み立てられたINSERT文で10000件を1件ずつ追加(IDの採番はシーケンスで)
242,718,095 (nanoTime) : DomaInsertSequenceTest 571,511,323 (nanoTime) : JdbcInsertSequenceTest 168,660,776 (nanoTime) : JpaInsertSequenceTest 234,842,355 (nanoTime) : S2DaoInsertSequenceTest 131,308,757 (nanoTime) : S2JdbcInsertSequenceTest
自動的に組み立てられたUPDATE文で10000件を1件ずつ更新
557,507,158 (nanoTime) : DomaUpdateTest 272,362,285 (nanoTime) : JdbcUpdateTest 581,354,348 (nanoTime) : JpaUpdateTest 518,369,697 (nanoTime) : S2DaoUpdateTest 400,294,103 (nanoTime) : S2JdbcUpdateTest
自動的に組み立てられたDELETE文で10000件を1件ずつ削除
233,064,979 (nanoTime) : DomaDeleteTest 104,274,537 (nanoTime) : JdbcDeleteTest 714,546,067 (nanoTime) : JpaDeleteTest 241,785,046 (nanoTime) : S2DaoDeleteTest 157,614,871 (nanoTime) : S2JdbcDeleteTest
SELECTでDomaがS2JDBCに負けたよ。。。ということで、勝っているのがなくなってしまいました。おそるべしS2JDBC。
ちなみに、S2JDBCがパフォチューする前の前回の比較はこちら。
http://d.hatena.ne.jp/taedium/20100105/p1