我想针对在测试和生产中运行的某些服务运行性能分析代码。我的计划是使用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中添加一行)会导致严重(就时间数据的有效性而言)性能问题吗?
答案 0 :(得分:2)
对于性能检测,您应该了解方面的开销。这种开销在PostSharp的早期版本中很重要,但在PostSharp 2.0中得到了很大的改进。
关于你的代码,我发现写入文件可能很慢并且线程不安全。当然,这取决于你的背景和目标。
性能计数器可能是一个不错的选择。