我是.Net Profiler和Visual C ++的新程序员,
我读了很多关于.Net Profiling的论坛和博客,我有这个问题。
我的Profiler应用程序必须是非托管代码,或者我可以在我的应用程序中使用.Net中的某些类?什么类型的项目我必须使用MFC或..创建ATL?
另一个问题是如何注册我的探查器DLL文件,我的计算机的每个应用程序都使用此探查器?
哪里有重写IL方法的最佳情况(输入profiler或JITCompilationStarted的方法)?
如何获取旧方法的输入变量并发送给新方法?
如何更改属性或整个类的IL?
我希望chane我的dll的所有日期时间格式,我认为我必须在JITCompilationStarted中搜索那些方法的名称,然后重写那些方法,你有更好的解决方案吗?非常感谢。
答案 0 :(得分:0)
你想试试这个很好。我建议您注意some old ideas about profiling that are less than helpful,并尝试改进它们。
我建议主要关注的是代码行,而不是函数,并且要获得的最有用的统计信息是,对于每一行,负责的时间百分比(即在调用堆栈上)。 (获得百分比的好处是,您无需关心事情需要多长时间,调用它们的次数,或者它们是否与其他流程竞争。)
我认为获取该信息的最佳方式是通过随机挂钟时间采集的堆栈样本。不要仅仅因为它们在程序被阻止时发生而排除样本,除非你想对不必要的I / O视而不见。一个好的方法是让用户打开/关闭采样,这样你就不会在等待用户输入时采集大量的采样。
采用这种方法的优秀剖析器的一个例子是RotateRight/Zoom。祝你好运。