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便利だった。