おそらくはそれさえも平凡な日々

Perl ORM ベンチマーク2014

この記事はPerlアドベントカレンダー2014の記事ではありません。

nihenさんのやつをベースに改変しました。

  • DBIx::Sunnyを加えてみた。DBIx::Sunny::Schemaという隠れた便利機能を使ってみた
  • Skinnyは外そうかと思ったけどちょっと驚きの事実があったので残した

https://gist.github.com/Songmu/989f10b2525523914de8

DBI: 1.631
DBIx::Class: 0.082810
DBIx::Skinny: 0.0742
Teng: 0.26
DBIx::Sunny: 0.22

--- insert ---
          Rate   dbic   teng skinny  sunny    dbi
dbic    2983/s     --   -16%   -72%   -78%   -92%
teng    3565/s    19%     --   -67%   -73%   -91%
skinny 10762/s   261%   202%     --   -19%   -72%
sunny  13307/s   346%   273%    24%     --   -65%
dbi    38399/s  1187%   977%   257%   189%     --

--- fast_insert ---
          Rate   dbic skinny   teng  sunny    dbi
dbic    2914/s     --   -69%   -72%   -84%   -92%
skinny  9294/s   219%     --   -10%   -50%   -74%
teng   10383/s   256%    12%     --   -44%   -70%
sunny  18666/s   541%   101%    80%     --   -47%
dbi    35136/s  1106%   278%   238%    88%     --

--- single ---
          Rate   dbic   teng skinny    dbi  sunny
dbic    2112/s     --   -58%   -60%   -93%   -93%
teng    5052/s   139%     --    -5%   -83%   -83%
skinny  5333/s   152%     6%     --   -82%   -82%
dbi    29277/s  1286%   480%   449%     --    -2%
sunny  29867/s  1314%   491%   460%     2%     --

--- lookup ---
          Rate   dbic skinny   teng    dbi  sunny
dbic    1253/s     --   -75%   -90%   -95%   -95%
skinny  4982/s   298%     --   -60%   -82%   -82%
teng   12329/s   884%   147%     --   -56%   -56%
dbi    27747/s  2114%   457%   125%     --    -0%
sunny  27836/s  2122%   459%   126%     0%     --

--- search ---
          Rate   dbic   teng skinny  sunny    dbi
dbic    1786/s     --   -40%   -42%   -83%   -87%
teng    2983/s    67%     --    -3%   -71%   -78%
skinny  3062/s    71%     3%     --   -70%   -78%
sunny  10259/s   474%   244%   235%     --   -25%
dbi    13766/s   671%   361%   350%    34%     --

--- search_by_sql ---
          Rate skinny   teng  sunny    dbi
skinny  4015/s     --    -3%   -59%   -76%
teng    4148/s     3%     --   -58%   -76%
sunny   9863/s   146%   138%     --   -42%
dbi    16999/s   323%   310%    72%     --

--- search_named ---
         Rate skinny   teng
skinny 3319/s     --   -16%
teng   3955/s    19%     --

所感。

Tengがそこまで速くなく、場合によってはSkinnyが逆転することも

Tengに機能追加とかエッジケースやセキュリティのケアとかが色々入っている以上仕方ない気がする。一回まじめにプロファイルして見なおしてみても良さそう。

DBICが結構頑張ってる

これくらいのパフォーマンスだったら支配的にボトルネックになることも少ないかなーとか思った。

DBIx::SunnyにNamedPlaceholderあると便利かな?

微妙な感じもする。とりあえず、関係ないけどなんとなくSQL::NamedPlaceholderにp-rして取り込んでもらうなどした。

DBIx::Sunny::Schema便利だった。

このベンチマークスクリプト、Tengに同梱するなり、ちゃんとrepo立ててp-r受け付けたりするとよさそう

created at
last modified at

2014-12-24T22:51:25+0900

comments powered by Disqus