uupaa-selector 2.0 できました。
2008-11-23追記: http://app.blog.livedoor.jp/sourcewalker/tb.cgi/51408207 で紹介されていたので、peppy と sizzle を追加
peppy と sizzle がキャッシュを使ってて(なんかズルイ)ので、彼らに負けじと謎の技術を惜しげもなくぶち込んでみた。
JavaScript修行中の身なので、より良い方法を思いつくたびにスクラップ&ビルドして効果を試してます。そんなこんなで、uupaa-selectorをゴニョゴニョやっているうちに、さらにちょっとだけ速く小さくなりました。
# あとIE8のIE8モードでも動作するようになりました。
過去の version との速度比較
V2.0rc1でキャッシュを導入しました。
PC1(Windows XP)
Browser | 10/1版 | 10/2版 | V1.4 | V1.5 | V2.0rc0 | V2.0rc1(cache on) | V2.0rc1(cache off) |
IE6 | 3161 | 317 | 212 | 204 | 176 | 32 | 188 |
Firefox2.0.0.7 | 322 | 314 | 276 | 52 | 283 | ||
Firefox3.0.3 | 173 | 175 | 141 | -61 | 138 | ||
Firefox3.1b1(*) | 76 | 88 | 67 | 52 | 52 | ||
Opera9.27 | 176 | 164 | 136 | 32 | 146 | ||
Opera9.61 | 88 | 80 | 100 | 80 | 88 | ||
Safari3.1(*) | 12 | 8 | 8 | 8 | 8 | ||
Chrome(*) | 55 | 53 | 53 | 57 | 53 | ||
Total | 1114 | 1086 | 957 | 252 | 956 | ||
---|---|---|---|---|---|---|---|
速度向上 | 100% | 103% | 114% | 774% | 114% |
(*) querySelectorAll() を使っています。
PC2(Windows Vista)
Browser | V1.4 | V1.5 | V2.0rc0 | V2.0rc1(cache on) | V2.0rc1(cache off) |
IE7 | 176 | 160 | 124 | 12 | 132 |
IE8 | 120 | 92 | 80 | 8 | 86 |
Total | 296 | 252 | 204 | 20 | 218 |
---|---|---|---|---|---|
速度向上 | 100% | 115% | 131% | 932% | 130% |
単位はms。±10msは測定誤差と思ってください。
- 速度比較 peppy と sizzle も計測するよ
- uupaa-selector-2.0.js 精度
SlickSpeed で複数のライブラリを同時に計測すると、干渉しておかしな値が出たり、他人の値を拾っちゃうようなので、あくまで目安程度に見てください。
Firefox3.1, Safari3, Chrome には querySelectorAll() が実装されているため速度の比較になりません。IE6またはIE7で見ると分かりやすい結果がでます。
他のライブラリの精度(再掲)
以下のリンクをクリックすると、CSS3.info の簡易テストが始まります。
Library | precise1(css.info) | 仕様準拠(精度) |
---|---|---|
uupaa-selector-2.0 | 582/582 | 100% |
DOMAssistant-2.7.4 | 531/582 | 91% |
Dojo-1.1.1 | 412/582 | 70% |
Ext-2.2 | 370/582 | 64% |
jQuery-1.2.6 | 395/582 | 68% |
Prototype-1.6.0 | 550/582 | 95% |
peppy-0.1.2 | 414/582 | 71% |
sizzle-0.1 | 400/582 | 69% |
Firefox3.0.3 だとこうなります。
CSS3.info の簡単なテストで満点を取れるようになったら、いよいよW3Cの互換性テストが控えているのですが、
- http://www.w3.org/Style/CSS/Test/CSS3/Selectors/current/xhtml/index.html XHTML版
- http://www.w3.org/Style/CSS/Test/CSS3/Selectors/current/html/index.html HTML版
これらを実施してみたところ、 uupaa 以外のライブラリは、さらに赤く染まります。
これだけは言わせてほしい。
「速度」はどうでもよくって、まずは「精度」
なんもチェックしない、おバカなコード(↓)が常に最速なのは当然。精度なくして速度を語るなかれ。
/* if (境界チェック) { ... たくさんの処理 ... } */
日本人が、技術力で外国人に負けるわけにはいかんのですよ。遊びといえどもね。
uupaa-selector2.0は、師走にリリースする予定です。