備忘録

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

プロファイラ

MSDNにある How To 情報: CLR プロファイラの使用方法 でプロファイリングしようとしたがうまくいかなかった。
「Wating for application to start common language runtime」と出たままプロファイルが開始せず、アプリを終わらせると次のメッセージが出てダメ。

System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。
場所 CLRProfiler.Form1.checkProcessTimer_Tick(Object sender, EventArgs e)
場所 System.Windows.Forms.Timer.OnTick(EventArgs e)
場所 System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


ソースが付いているので調べることも可能だと思われるが、そこまでの気力は無し。

GPL で公開している nprof を使ってみた。
最新版が2009年にでた 0.11 で大丈夫か?と思ったがちゃんと動いた。

かわがらす ver0.8.0.0で試してみたら、

Application.DoEvents();


に約6割の時間を費やしていた。
マルチスレッドで動かしていて、別スレッドの処理の終わりをメインスレッドでループして監視していたがその際、ステータスバーを更新するのに DoEvent を呼び出していた。
スリープを入れるようにして大分改善。次期バージョンではCPU使用率が減って速くなるかな

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://ncdkayak.blog.fc2.com/tb.php/11-b4e3522d
この記事にトラックバックする(FC2ブログユーザー)

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。