めちゃくちゃ適当だが、
http://sorrex.googlecode.com/svn-history/r63/trunk/js/parse.html
に
4万文字の適当なプレーンテキストを食わせると
Chrome | 10ms |
firefox3.0 | 30ms |
firefox3.1 beta2 | 23ms |
IE6 | 80ms |
http://sorrex.googlecode.com/svn-history/r63/sorrex.summary.txt
を10回繰り返したものを食わせると
Chrome | 60ms |
firefox3.0 | 170ms |
firefox3.1 beta2 | 140ms |
IE6 | 600ms |
firefox3.0のfirebugでのプロファイリングが
前者
yyparse | 56 | 16.54% | 676.106ms | ハッシュアクセス、演算 |
_html | 28448 | 14.97% | 611.895ms | str.replace(), arr.join("") |
getProperties | 26600 | 7.37% | 301.068ms | arr.join("") |
f | 28504 | 6.45% | 263.795ms | |
get | 28504 | 5.28% | 215.718ms | ハッシュアクセス |
initialize | 28504 | 4.06% | 166.045ms | |
yylex | 28504 | 3.2% | 130.902ms |
後者
yyparse | 49 | 25.07% | 4872.689ms | ハッシュアクセス、演算 |
_html | 100499 | 8.35% | 1621.835ms | str.replace(), arr.join("") |
get | 208348 | 7.86% | 1527.142ms | ハッシュアクセス、str.substring() |
getProperties | 98539 | 5.97% | 1159.219ms | str.replace(), arr.join("") |
f | 131908 | 5.47% | 1063.224ms | |
yylex | 208348 | 4.84% | 940.521ms | |
initialize | 131908 | 4.32% | 840.07ms |
後者のが 関数呼び出しが多い+replaceコスト+substringコスト+正規表現コスト で重い
tracemonkeyで2,3割早くなってるが、後者でも差はあまり縮まっていないところを見るとなかなか期待できそう
正確なテストはそのうち誰かがやってくれる、きっと…