有没有办法让EQATEC分析系统DLL?

时间:2012-07-03 18:39:49

标签: c# profiling profiler eqatec

我正在使用EQATEC,我喜欢它。但是,我似乎无法分析.NET系统DLL,例如System.Net.dllMicrosoft.Xna.Framework.dll,因为它们不在我的可执行文件目录中。

有没有办法做到这一点?

现在它告诉我一个方法本身需要花费很多时间,这是假的,因为它是外部系统DLL调用,它一直占用,但它不会显示此信息。

2 个答案:

答案 0 :(得分:1)

来自EQATEC用户指南,在已知限制下:

  • 目前只定义了已定义的方法,而不是引用的方法。因此,应用程序本身定义的所有方法都将被分析,但不是System。* etc。

答案 1 :(得分:1)

  

现在它告诉我一个方法需要花费很多时间,这就是   false,因为它是外部系统DLL调用,它接受所有   时间,但它不显示此信息。

没关系。

如果您知道某些系统例程经常拥有程序计数器,那对您有何帮助? 您仍然需要弄清楚您的代码授权的内容。

示例:内存分配是一个系统功能,通常需要很长一段时间。 这是否意味着您需要更快的内存分配器? 不,这意味着你需要做更少的new

您应该在代码中查找例程(甚至更好 - ),其中包含的挂钟时间(自己加上被调用者)是总时间的百分比 。 (不要寻找高通话数或高毫秒数。寻找高百分比。)

为什么呢?因为这是它负责的总时间的一小部分。 如果你能以某种方式使例程或线路没有时间,整体时间将减少该百分比。 通常你这样做的方法是减少从属调用,或者根本不调用。

例如,如果您的程序需要10秒钟,并且有一行代码new且其包含百分比为20%(即该代码行及其封闭例程位于堆栈20上百分之一的时间),那么如果你可以减少或者根本不执行那条线,你可以节省2秒。