您对在.NET技术中完成的每个应用程序的性能分析和优化中应该使用哪些技术有何看法?
您知道什么样的调试/跟踪技术可以很强大?
您是否认为在大型项目中有必要进行自定义调试/诊断课程?
您是否建议使用应用程序分析器或任何其他第三方应用程序?
另一个非常相关的问题:如何获得执行方法所花费的时间?
答案 0 :(得分:1)
这是与语言无关的建议。如果您获得了experience doing performance tuning个现有应用程序,特别是较大的应用程序,您可以了解我所学到的知识。最大的性能杀手是过度设计:过多的抽象层,通知驱动的处理等等。问题在于,在抽象的情况下,让你的生活变得更轻松的小事最终会在你不知情的情况下吸引你进入大周期的浪费。
答案 1 :(得分:1)
这是一个非常通用的问题:)但是这里有一些指导
关于诊断和跟踪,您可以使用System.Dignostics命名空间中的类,如TraceListner,您还可以考虑关键代码路径的ETW事件(MSDN中的事件跟踪对于Windows有很好的参考)。
您可以在System.Dignostics命名空间中的内置类之上构建自己的自定义dignostic类。
您需要在抓包中使用的几个非常有用的工具是VS Profiler,以及用于时间分析和内存分析的CLR分析器。
您可以使用分析器对热门函数有一个高级概念,可以使用StopWatch类来测量某些选定方法的时间,或者对于高分辨率时序,您可以使用QueryPerformanceCounter和QueryPerformanceFrequency windows API