Bug-org 906281 each nsEventStateManager should not register as a pref observer
初回投稿日時: 2013年08月31日11時59分48秒
カテゴリ: Mozilla Core Mozilla26 バグ修正
SNS:
Tweet (list)
nsEventStateManager
が、グローバル変数に設定値をキャッシュしているにもかかわらず、何故か、全てのインスタンスが設定変更を監視していて、設定変更の際に、全てのインスタンスが同じ変数の値を上書きし続けるという、変なことになっていました。これにより、nsEventStateManager
のインスタンスが破棄される際に、設定変更監視を行っているオブジェクトの登録解除を行うコストがそこそこ高いらしく、タブを100から200程度ほど、一度に閉じると、相当なものになっていたようです。
今回の修正で、原則的には、Preferences::Add*VarCache()
を使用するようにし、変更タイミングが必要なもののみ、staticなクラス(nsEventStateManager::Prefs
)が監視するように変更しました。
この変更で、普段の利用でパフォーマンスの違いを体感できることはないと思いますが、大量に<iframe>
を活用しているようなサイトだと、ms単位ではレスポンスが改善されていると思います。