2009-06-17 7 views
3

非常に大きなアプリケーションでチューニングをしています。アプリケーションで発生したイベントの数を測定する方法はありますか?たとえば、System.Diagnosticsで何かを使用していますか?発生したイベントの数を測定しますか?

イベント内にコードを追加することは、アプリケーションのサイズのために許容できる解決策ではありません。

ありプロファイリングツールがありますが、私のために迅速かつ簡単な方法は、これは非常に興味深い質問です。ネット

答えて

0

で見つかったものになるだろう。

実際には、追加のコードなしで簡単にイベントをトレースする方法はありません。これは、コードを追加することは難しいことではなく、パフォーマンスを向上させることでもありません。

すべてのイベントでカスタムのeventArgsを使用する場合、カスタムeventArgの1つを作成するたびにカウントすることができる単純なロギングステートメントをコンストラクタに追加できます。

カスタムイベントArgsを使用していない場合は、正確にこのカウントを行うcustomEventArgsクラスを使用して、eventArgsを非常に簡単に拡張できます。コンストラクタを拡張して静的変数をいくつか更新してください。静的変数は毎回ログに書き出すことができます。その後、クイックリファクタを使用して、デフォルトのすべてのeventArgの名前を、この新しい少し異なるcustomEventArgsに変更することができます。これは10分すべてを要し、既存のコードを破ることはありません。

ただし、プロファイラーがこれを行うことができるとわかっている場合は、それを使用しないでください。アプリケーションがこのような巨大なもので、非常に小さな最適化をしようとしている場合、このアプリケーションを構築する人は、ソフトウェアの改良と引き換えにライセンスを購入することに伴う追加コストにはおそらく気を付けません。

+0

解決策のサイズ(8 MB * .csファイル)により、カスタムイベント引数を使用するこのアプローチはあまりにも面倒です。 – ToPa

+0

IDEを使用している場合は、customeventを作成した後、簡単にすべてを置き換えることができます。 10分または15分以上かかることはありません。すでにあなたがcustomeventsを使用している場合は、カウントを行うために新しいプライベートフィールドを追加するだけです。 – Mark

+0

また、あなたのASCIIテキスト* .csファイルは8MBですか?その場合は、プログラムのいくつかの深刻なリファクタリングが必要です。 – Mark

0

Windowsのイベントビューアやクラスのイベントの定期購読についてお話ししていますか?

後者の方は、あなたのイベントに登録していますか?たぶん、あなたは、いくつかの 'グルー'コードを書くことができますイベントは、離れて数えている加入者の間のサイト!

1

イベントの数を知ることが何らかの方法で役立つとは確信していません。あなたのプログラムがどこで時間を過ごしているのか、あるいはそのメモリを割り当てるのかを知ることは、より有益でしょう。プロファイラがそれを助けます。記録、プロファイラのリストについては


+0

appicationは、多くの(〜80)コマンドが起動時にイベント・リスナーを設定するコマンド・パターンを使用します。ソリューションのサイズによって、必要のないときに多くのイベントが「キャッチ」され、起動されます。私は最初に必要なときにコマンドをインスタンス化するソリューションを試しています。それは私の質問をこれの効果を測定することです。 (ソリューションのソースコード* .csは約8 MBです) – ToPa

0

私の代わりに、パフォーマンスmeasuremetツールを試してみるという結論になってきました。 thye測定コードを賢明に行う簡単な方法はないので。私はそれが私のために何ができるのかを見てANTSを頼むつもりです。

関連する問題