はてブ年鑑2009年1月分うp と jQuery.remove() の高速化話

2009年1月分を集計してアップロードしておいた。

先月までは「SEO」「CMS」といった技術系のキーワードが必ず TOP10 にランクインしてたのに今月は見当たらない。いちおう「データベース」とか「配色」といったキーワードは出てきてはいるんだけど、専門用語ではないのが印象的だ。対して台頭したのが料理ネタ。衣食住に関係するネタが増えてきて技術色が薄くなっているような気がする。

あくまで気がするだけなので、カテゴリ別の割合遷移といったものを算出したら興味深い結果になるかもしれない。やろうと思えばできるんだけど、ここ最近は自分の興味が実装よりも勉強のほうによってきたので手は止まっている。

おまけ:jQuery の remove の話

関係ないけど、ページの JavaScript 初期化をちょっと速くした。jQuery.remove() を自前で removeChild するようにしたら 600ms→1ms ぐらいになった。

jQuery の remove() は子孫ノードを全て列挙して、イベントやデータを削除していくので、子孫ノードがたくさんある場合には時間かかる。はてブ年鑑では歴代の記録を全部 HTML で保持しているので、再帰的なノード列挙は、かなりの無駄な処理だったようだ。

もちろん、jQuery を使ってイベント登録したり、data() を呼んでたりした場合には jQuery.remove() を使ったほうがメモリリークしないから安心だろう。それでも、イベントとか data() を使ってなかったり、初期化の段階だったら、めんどうだけど elm.parentNode.removeChild(elm) としたほうがかなり速いのは覚えておいたほうがよいかもしれない。