今日は朝刊(yyagi さんの「なるようになるブログ」)で取り上げられてた PR から ActiveModel::AttributeMutationTracker
を読んだ。
属性変更をトラッキングするクラス。ActiveModel::Dirty
とかで使われていそうで馴染みがあったのでシュッと読めたが、ForcedMutationTracker
クラスが何のためのクラスかわからなかった。
コミットログから高速化の目的で切り出されているのが分かった。 force_change
を track するために切り出したクラスなんだけど、ivar backed のものと attributes backed のものを一緒に動かすとすごく遅かったので切り出したとのこと。ソースとにらめっこしたりオブジェクトの中身見たりしたけど、いまいちなぜこれでここまで高速化されるかが分からない...ぐぬぬ。それにしてもすごい成果だ。
PR