2

テストと本番環境で実行されているいくつかのサービスに対してプロファイリングコードを実行したいと思います。私の計画は、PostSharpを使用して次のようなクラスを実装することです。

    public class TimerAttribute : OnMethodBoundaryAspect
    {
        //some data members
        //...

        public override void OnEntry(MethodExecutionEventArgs eventArgs)
        {
            //write method entry time to file
        }

        public override void OnExit(MethodExecutionEventArgs eventArgs)
        {
            //write method exit time to file
        }
    }

行き過ぎる前に、知っておくべき潜在的な落とし穴はありますか?これらのメソッドを広く使用すると(つまり、assemblyinfoに行を追加するだけで)、(タイミングデータの有効性に関して)深刻なパフォーマンスの問題が発生しますか?

4

1 に答える 1

2

パフォーマンスインストルメンテーションについては、アスペクトのオーバーヘッドに注意する必要があります。このオーバーヘッドは、PostSharpの以前のバージョンでは重要でしたが、PostSharp2.0では大幅に改善されました。

あなたのコードに関しては、ファイルへの書き込みが遅く、スレッドセーフでない可能性があるという危険性があると思います。もちろん、それはあなたの文脈と目的に本当に依存します。

パフォーマンスカウンターは良い代替手段かもしれません。

于 2010-01-22T09:56:14.450 に答える