Tsuikyo_js のブラウザ別パフォーマンス

2008/11/22 | めも

先日の Tsuikyo_js の余談.JavaScript のパフォーマンスが第何次か知らないけどブラウザ戦争でアツいとかいう話.

個人的にはブラウザは他にもっと重視することがあるだろって思うので js の速度だけ重視する気はない(というか俺の用途では Fx2 並の速度で足りてる)んだけど,まあ速いに越したことはないんじゃないでしょうか,みたいな傍観姿勢だったけど一度くらい体感しておいて損はないだろ.

Tsuikyo_js めがっさ遅かったらどうしようという不安もあったし,ついでなのでそれでベンチ.DOM 操作のスピード等はどうせそんな激しいことはしないだろうからどうでもいいが,文字列処理とかオブジェクト操作とか基本的なパフォーマンスはあると嬉しく,それ測るなら実際に Tsuikyo_js 動かしてやれば十分という判断. 中でやってる処理のことよくわかってる分,そのへんの総合ベンチの結果より実感が伴うのもいい.

E6600@3.0GHz
AddWord(ms)
E6600@3.0GHz
Stroke(ms)
U1300@1.1GHz
AddWord(ms)
U1300@1.1GHz
Stroke(ms)
IE6 - - 2318 1687
IE7 781 422 2156 1437
IE8 578 313 - -
Fx2 - - 1579 1000
Fx3 136 92 386 268
Opera9 203 125 641 390
Safari3 187 110 534 289
Chrome 37 57 140 156
lunascape 125 74 356 212

抜けてるトコは試せてない.AddWord は 1000 ワード分オートマトン作るのにかかった時間で Stroke は正しいキーを 10000 回(打ち切ったらワードに変えつつ)受理させた時間.

Opera,Safari,lunascape*1 というマイナーどころがアピールの通り Fx3 と張り合うくらい頑張ってることが確認できたが,Chrome の v8 エンジンはさらにずば抜けてるなぁ. 速いよって話は聞いてたけど,いやいやそこまででもないよって話とかケースによるよって話とかもあり,なんだかんだ言って Fx3 との差は誤差程度かなと思ってたんだが,認識を改める必要がありそう. 少なくともハッシュとか文字列操作とか基本的な部分は爆速なんだと思う*2

IE は 8 になってもまだ全然追いつきませんだめぽですという感じで,Fx2 も今になって見返すと遅く思える.

Tsuikyo_js のパフォーマンスの話に戻れば,U1300 IE6 で 1000 ワード生成 2 秒って, 1 ワード 2ms だからこれは全然問題ない範囲. Pen3 とか化石環境でも 10ms くらいのはずで,これくらいなら必要に応じてワード生成しても問題になることはなさそうだ.パースする部分が結構計算量ありそうな雰囲気だったんでリアルタイムに生成したらもたつくかなぁとか心配してたんだが杞憂であった.打鍵時遷移の方はより一層問題なし.

完璧主義というか細かいことにこだわるタイプなんで,コード書いてて頭よさげな計算量小さいアルゴリズムで書けないと,ここがネックになってひどく遅くなるんじゃないかとビクビクする癖があるんだよな*3.作業ペース落ちるだけの悪い癖なのかアルゴリズムの良し悪しの感覚を肌で覚えるための良い癖なのかは今のところ不明.もっとこの癖が進化すると,やってくる n は高々 1000 くらいだからこのオーダーなら問題ない,とか場合に応じて判断できるようになりそうだけどその地点が遠い.

崇高な書き方でもなければ綺麗な書き方でもないけどまあ中の下くらいのクオリティのものがとにかくものすごいスピードで書けますっていうのが俺の理想像なんだけど,どうやったらなれるのかね? って量しかないか……日に 1000 行はコード書けって話だよね. 現状平均 20 行くらいだもん.

なんか全然違う話になってるのでこのへんで終わりにしよう.

  1. というか次期 Fx 搭載の TraceMonkey エンジン. []
  2. Tsuikyo_js の中でやってるのそういうことだけなんで. []
  3. 多分 icpc とか計算時間がシビアなコンテストプログラミングにチャレンジしようとしてた頃についたんだと思う. []

Trackback URL

この記事にはまだコメントがついていません。

コメントをどうぞ