Hatena::ブログ(Diary)

電脳戦士ハラキリ -SE道とは死ぬ事と見つけたり- このページをアンテナに追加 RSSフィード

JavaScriptやKinect, OpenNI, iOSについて。Twitterは@hagino3000
SIerで兵隊(スーツ着て客先常駐)をやっていた時期が私にもありました……。

2008-12-12

IEでも動作するjavascriptプロファイラ、XBug を試してみた

IE6/7 でも動作するというJavascriptデバッガ/プロファイラのXBugを試してみたのでメモ。

サイトが非常に見にくいのはひとまず置いておいて、特徴はサーバ側にファイルを配置して使う所がfirebug等のプロファイラと異なる点でしょうか。とりあえずローカルサーバで使う場合のやり方。

画像は例としてFCKeditor起動時のパフォーマンスを計測してます。

ファイルの配置

ダウンロードページからインストーラーをダウンロードして起動。インストール先を聞かれるので、ローカルApacheのDocument Rootを指定。htmlファイルやjsファイルが配置される。

起動

インストールしたディレクトリにxbug.htmが存在するので http://localhost/xbug.htm からアクセス。

左にXBug Browser、右にXBug Debuggerが表示される。

XBug Browserの中に使い方の説明書きが表示される

f:id:hagino_3000:20081212021548p:image

XBug Browserのロケーションバーにpathを入れるとファイルが見られる

f:id:hagino_3000:20081212021546p:image



exampleのチェック

XBug Browserのロケーションバーから /xbug/example.htm を指定するとexample.htmのチェックが可能。exampleのjsファイルを見ると、XBugのプロファイル機能でメソッドを検知可能とするための記述方法が確認できる。

チェックしたいjsファイルの下準備

XBugでプロファイリングしたいjsファイルに手を入れます。

1.XOS変数の定義

次の行をファイルの先頭に追加

XOS=top.XOS||{};(function(_){return(!XOS.debug)?_:XOS.debug.call(window,_)})
2.メソッド定義を匿名空間に押し込む

例(変更前)


var Samurai = function(name){
	this.name = name;
}

Samurai.prototype.attack = function(){
	return 'katana';
}


例(変更後)

(function(){

var Samurai = function(name){
	this.name = name;
}

Samurai.prototype.attach = function(){
	return 'katana';
}

// スコープの外から参照可能とする
window.Samurai = Samurai;

})();

XBug Browserで画面を表示

XBug Browserでプロファイルしたい画面を表示。

XBug Debuggerが反応したらOK。XBug Debuggerのメニューから計測したいメソッドを選んだりしたら、再度XBug Browserで画面を読み込み直せばプロファイルしてくれる。

XBug Browserで計測したい画面を表示した所

f:id:hagino_3000:20081212021543p:image

計測対象外とするメソッドにはチェックを入れる

f:id:hagino_3000:20081212021541p:image

どのメソッドに何msかかっているか時系列で表示される

f:id:hagino_3000:20081212021538p:image

感想

これはめんどくさすぎだろうjk......メソッド定義をスコープの中に押し込まないといけないとか。XBugがどういう作りなのか調べてないけど、もっと簡単にやれる方法が見つかれば書きます。

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/hagino_3000/20081212/1229015916