毎秒100回JavaScriptが実行ってのがどの程度なのか

非ネットで聞いた話なども含め、ここまでやっても信じない人もいっぱいいるみたいで、そこまで疑う人のためにとりあえずパッチは出しておいたのだが、みんな「怪しいよね」って陰で言うだけで、誰も追試はしてくれなかったみたいだ。他人の書いた、しかもCPU使用率なんて割とどうでもいい系のエントリなんてわざわざ検証する人はそりゃいないだろうとは思うけど、気分が悪いのも確かだ。どうせ誰も試さないなら、パッチ自体は次のネタにとっときゃよかったなぁ…。

http://d.hatena.ne.jp/tkng/20091003/1254578195

では折角なので、検証を。Firefox前提なら、Firebugのプロファイル機能で一発なので、検証用マシン*1で以下のスクリプト実行。

// ==UserScript==
// @name           google stats
// @namespace      http://ss-o.net/
// @include        http://www.google.co.jp/webhp?hl=ja
// ==/UserScript==

window.addEventListener('load',function(){
	console.profile('google stats');
	setTimeout(function(){
		console.profileEnd('google stats');
	}, 3000);
}, false);

で、結果はこちら。

f:id:os0x:20091005112908p:image

3000msの計測時間中、function ga(例のvar k=t.value;k!=h&&X(0);h=kの部分)の実行回数は220回、所要時間は5.747ms、一回辺りの実行時間は0.026msです。念を押しますが、単位はmsです。
ちなみに、一応Firefox3.0.12でも試したけど結果はほとんど同じでした

Googleのトップページを開くと毎秒100回実行されるスクリプトを止めるユーザースクリプト - 0xFFがプラシーボだといったのはこういう理由です。

IE6とかだともっと重いだろうけど、それでもCPUを数パーセント使うなんてことはないはずなんですけどね。。
id:tkngさんの環境がどうなっているのか気になります。⇒ Googleのトップページを開いた時の各ブラウザでのCPU使用率 - 射撃しつつ前転

そうそう、割と大事なことを忘れていました。Firebugのプロファイル機能は便利ですが、当然ながらこれ自体が重いので、プロファイリングしてないときの実行速度はこれ以上に高速です。

*1:マシンは[http://panasonic.jp/pc/support/products/w5k/spec.html:title=CF-W5K]:インテル(R) CoreTM Solo プロセッサー 超低電圧版 U1300(1.06GHz)で、Firefox3.5(jit on)、Add-onFirebugGreasemonkey(AutoPagerizeのみ)。ちなみになぜ検証用マシンなのかというと、本体とモニタが今にもお別れしそうな状態だからです…