2010-01-22 12 views
2

Je voudrais exécuter le code de profilage contre certains services en cours de test et de production. Mon plan est d'utiliser PostSharp pour mettre en œuvre une classe qui ressemble àPostSharp est-il un bon moyen de générer du code de profil en production?

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 
     } 
    } 

Avant d'aller trop loin, ce qu'il ya des pièges potentiels que je devrais être au courant? L'utilisation généralisée (c'est-à-dire l'ajout d'une ligne à assemblyinfo) de ces méthodes entraîne-t-elle de sérieux problèmes de performance (en termes de validité des données temporelles)?

Répondre

2

Pour l'instrumentation de performance, vous devez être conscient de la surcharge de l'aspect. Cette surcharge était importante dans les versions précédentes de PostSharp, mais elle a été grandement améliorée dans PostSharp 2.0.

En ce qui concerne votre code, je vois le danger est que l'écriture dans le fichier peut être lente et thread dangereux. Cela dépend vraiment de votre contexte et de vos objectifs, bien sûr.

Les compteurs de performance peuvent constituer une bonne alternative.