Sleipnir(というかIE6)のJavaScript処理の遅さが相変わらず致命的すぎるのと、
FireBugでチェックする機会が多くなったので、FireFoxを使用する機会が増えました。
それでも7:3くらいでSleipnirだけど。


基本的に、JavaScriptの描画が重いサイトについては、
セキュリティモードで開くことになってるけど、
使用頻度が高いサイトに関してはFireFoxで開く。
例えば、FireFoxのホームははてなブックマークになってます。

んで、それらの間に、次の2つを織り込んで、

FireFox上で『Sleipnirで開く』を実行する。(その2) - NOBODY:PLACE - MUTTER
[sleipnir] Sleipnir上で『FireFoxで開く』を実行する。 - NOBODY:PLACE - MUTTER

どちらか使いやすい方で開くっていう感じ。

どのページが重いのか?

実際にいくつか上げてみますと。


スポナビの個別記事ページ

スポーツナビ|黒田、英語の歌披露へ 新人の洗礼

トップページは別に問題がない。
2つの差は何なんだろう…と考えてソースを眺めてみてもそう大きくは変わらず、
これがあるかないかくらい。

<script src="http://i.yimg.jp/images/sportsnavi/js/ecl.js" type="text/javascript">


MAJOR.JPの個別ページ

MAJOR.JP|MLB ニュース

MAJOR.JPもスポナビと同じYahoo!Japanなので、
共通してる部分はあるけれども、スポナビよりはトップと個別の差が大きい。
ので、変わっている点を指摘するのは難しいけど、
とりあえず、スポナビと同じecl.jsの有無という差はある。

ちなみに中身は、エンコード毎のエスケープのための関数。


はてなブックマークトップページ以外(特にユーザページ)

はてなブックマーク - Hatena::Bookmark::konaze

はてなブックマークの場合、トップとの比較で分かりやすいのははてなスター。
んで、はてなスターと言えばgetElementByClassName。
getElementByClassNameといえばDOM。


404 Blog Not Found

404 Blog Not Found:NEET = Network-based Education, Employment, and Training

404はウィジェットが凄い多いので絞りきれないけれども、
トップページも重いことを考えると、やはりその辺か。
さすがにスクリプト全部精査とかしたくないのでしないけど。

ちなみにlivedoor Blogが重いということではなさそう。
他のブログも全て重いというわけではないので。
痛いニュースとか全然大丈夫だし。

痛いニュース(ノ∀`):資産2億の株式ディーラー「BNFは単に運が良かっただけ。ディーラーと一騎打ちなら必ず負ける」

以前弾さんが、“うちのサイトではFireFoxが多い”みたいなことを書いてたけども、
単に重くて見れないからじゃないかっていう気もする。
気がするだけだけど。


GIZMODO JAPAN(特に個別ページ)

大量のピンポン玉を打ち出して楽器を奏でるマシーン(動画) : Gizmodo Japan(ギズモード・ジャパン)

GIZMODOの場合は動作に特徴があって、

  1. ページを閉じるときにも重くなる
  2. セキュアモードでアクセスすると、Amazonアソシエイトのみ表示する画面に飛ばされる

そういうわけなので、デフォルトモードでアクセスせざるを得なくて、
なおかつ閉じるときも重いので諦めてアクセスしないと無理的な。
中身についてはprototype.jsがあるし、これもやっぱりDOMかなぁと思うけど、
いやでもlighboxのためだけにしか使ってない可能性もあるし…




…まだあったような気がするけど、とりあえずこんなもんで。
(あ、mixiもそうだわ)




どこが問題になってるんだろう?

個人的な仮説としては、超ありきたりだけど、
やはりIEのDOM解析の遅さってのが問題なんだろうな。
Xpathあたりとか。

ppBlog1.7.1
当然ながら、XPathをサポートしていないIE6,7は、通常通りDOM解析をするアプローチしかないです。こちらの計測では、XPathを利用するより5倍ほど遅いです。

Sleipnirはその辺IEに依存してるわけなので、
IEのバグはそのままストレートに出るし、仕様と言わざるを得ないだろうと。
仕方のないこと…かなぁ。
フェンリルはそれで良いんだろうか。

良いんだろうかって言われても困るだろうけど。



個人的にJavaScriptを書くときには、
prototypeのXpathを使用するような動作(getElementByClassNameとか)を、
多用しないように気をつけるしかないなーと思う。
こちらで書かれている通り、

prototype.js でタブ切り替え(複数表示版) - AUSGANG SOFT
document.getElementsByClassName の使用をやめました。
ページによっては非常に重いという指摘をいただいていたので、必要ないようにしてみました。

構造の改造が必要にはなるけれども、
構造によっては工夫次第でgetElementsByClassNameを回避し、
結果としてパフォーマンスを上げられるはず。
このサイトのちょっとした仕組みでさえ、時間掛かるもんね。




まぁそういうわけで、Sleipnirで閲覧困難なページをFireFoxから見てるんですが、
それにしても今さら過ぎるけど、FireBug便利すぎw

Sleipnirにも、Hawkeyeっていう凄いプラグインがあるけど、

Sleipnir | プラグイン | Hawkeye

ソースをシームレスに見れるかどうかとか、
ページ遷移/ページ更新時に追跡してくれるかとか、
CSS/JavaScriptのデバッグのし易さとか、
ちょっと敵わないかなーとか思う。