いろいろベンチ.

うーん,こうゆう数字をうかつに公開するのはよろしくないんだが.自分のメモでもあるんで,とりあず書いておこう.


前から気になっていた,各種O/Rマッパーのベンチマークを取ってみました.
素のJDBC, Hibernate, Torque, DbUtilsに対して,それぞれ以下の値を計測.

  1. 1000個のオブジェクトをINSERTするのにかかった時間.
  2. そのオブジェクトをすべて取得(SELECT *)するのを1000回繰返すのにかかった時間.
  3. 1000個のオブジェクトを一つずつUPDATEするのにかかった時間.
  4. 1000個のオブジェクトを一つずつDELETEするのにかかった時間.

手元にあったRDBMySQL.んで,その結果はこう(単位は[msec]ね).

JDBCHibernateTorqueDbUtils
INSERT344625828344
SELECT30,10918,75046,51538,092
UPDATE3907501,250438
DELETE375890593375


JDBCが早いのとTorqueが遅いのは予想とおりなんですけど,HibernateのSELECTが予想外に早くてビックリした.


CGLIB効果ってスゴイのかとおもって,hibernate.cglib.use_reflection_optimizerfalseにしたら,15%ほど遅くなった.
#でも15%程度.検索だけを見るとHibernate圧勝や.


DbUtilsはね.実装がSELECT以外はJDBCとそんな変わらんから,こんなもんなんだと思う.でも,こいつにCGLIB使ったら,結構イケんじゃないのって気がするなぁ.


ps.
この数字,信用するかは自己責任でお願いします.観測者であるアタシ以外に,この値が役立つ人がいるとは思わんが.なにせ測定環境とか明記してないし.
#検証コードは恥ずかしくて,とても公開する気にはならんが.:-D


だれか似たようなことやってみない?


(追記)つづきがあるよ.