Riding Rails: Rails 3.0.3: Faster Active Record plus fixes
Active Record のパフォーマンスが大幅に改善されたのとバグフィックスらしいです。
忘れられない一日ってのはコレか。
ActiveRecordの件ですが
ある時は「たこ焼き仮面」、またある時は「ひげの山男」、
そしてRuby CommiterでもありRails Commiterでもある
Aaron Patterson氏によってARelのパフォーマンス改善がなされたようです。
ARel Two Point Ohhhhh Yaaaaaa |
こちらのブログで紹介されてます。
テンション高くて楽しいです。
We can beat Rails 2.3.x!
(斜め読みで恐縮ですがメモ。間違いあればご指摘願います)
Rails3.xは、Rails2.3.xより5倍も遅いというbenchmark結果もあり
実際に氏がbenchmarkを取ると2倍遅い結果となったらしい。
表面上の改善(SQL文をロギングするときに呼ぶTime.nowが倍遅いとこや、attr_readerを使用することで早くなる)をしてもRails2.3の方が早かったらしい。
結局、ARelのSQL生成アルゴリズムに問題があるようで
Table[:users].project('id').where('1 = 1').where('2 = 2')
みたいにmethod chainして書くと、再帰的によばれるんだと。
O(n^2)だと。
Post.find(1) without column info | Flickr - Photo Sharing!
関係ないけど、GraphVizいいね。
O(n)なAST(Abstract Syntax Tree)に変更することで高速化に成功。
なんだか、凄そうなのしか今は分かんないけど
有り難く使わせていただきます。
あと、最後のパラグラフが熱くていい。