Rails3.0.3 release

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)に変更することで高速化に成功。
なんだか、凄そうなのしか今は分かんないけど
有り難く使わせていただきます。


あと、最後のパラグラフが熱くていい。