2008-10-16
The Performance of Dynamic Site (id:amachang)
JJUG Cross Community Conference 2008 Fall - Sessions
概要
- JavaScriptの誤解
- 重くしている犯人
- プロファイラ
JavaScriptの誤解
- JavaScriptは遅い
- 速いです
重くしている犯人
- JavaScriptとコンポーネント(C++)との通信(取得)
XPConnectやCOMとの通信
COMは重い
取得の場合と同じ「.」の数
parent.appendChild(child)だとparentとchildにフラグが立つ。
重要:再計算がJavaScriptの実行後に行われる事がある
→JavaScript内でのベンチやプロファイリングが役に立たない
- スタイルの計算
一番最適化が効く所
- 変更フラグが経っているノードがあるままJavaScriptが終了した
- 変更フラグが経っている状態でスタイルの再計算が必要な操作が行われた
- offsetWidthの取得とか
「変更→再計算が必要な操作(取得)→変更」というのが癌
再計算が行われる代表的操作
再計算が行われる範囲
classを設定した場合
自身・子孫・弟・弟の子孫
styleプロパティの直接書き換え
自身・継承されている要素
styleプロパティの書き換えの方がclassの書き換えより速い。でも汚い。
Webkitを自分でビルドしてdebug出力すれば再計算の起こったタイミングも調べられますよ。
- レイアウトの計算
激しく重い
先祖要素も考えないといけないから
プロファイラ
何が重いとかより何度も何度も呼ばれてCPU時間を食ってる所をチューニング
JUIでもあった話(測りたい部分を適当な名前を付けた関数のその場定義&呼び出し)
ただ闇雲にチューニングするのは辞めよう
Q&A
トラックバック - http://d.hatena.ne.jp/monjudoh/20081016/1224143384
リンク元
- 174 http://ray.sakura.ne.jp/aki/
- 41 http://reader.livedoor.com/reader/
- 22 http://d.hatena.ne.jp/
- 22 http://d.hatena.ne.jp/cyokodog/20081016/jquerylinks01
- 21 http://bookmark.fc2.com/
- 20 http://b.hatena.ne.jp/
- 16 http://b.hatena.ne.jp/entrylist?sort=hot
- 12 http://d.hatena.ne.jp/f-star/20081016/p24
- 10 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=yW4&q=jquery+url+encode&btnG=検索&lr=
- 9 http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/monjudoh/20081016/1224143384
