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でDomaS2JDBCに負けたよ。。。ということで、勝っているのがなくなってしまいました。おそるべしS2JDBC


ちなみに、S2JDBCがパフォチューする前の前回の比較はこちら。
http://d.hatena.ne.jp/taedium/20100105/p1