【问题标题】:Is there a way for EQATEC to profile system DLLs?EQATEC 有没有办法分析系统 DLL?
【发布时间】:2012-07-04 06:03:06
【问题描述】:

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

有没有办法做到这一点?

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

【问题讨论】:

    标签: c# profiling profiler eqatec


    【解决方案1】:

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

    • 当前只分析定义的方法,而不是引用的方法。因此,您的应用程序本身定义的所有方法都将被分析,而不是 System.* 等。

    【讨论】:

      【解决方案2】:

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

      没关系。

      如果您知道某个系统例程拥有大量程序计数器,这对您有何帮助? 您仍然需要弄清楚您的代码中的什么授权它。

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

      您应该在代码中寻找包含挂钟时间(自身加上被调用者)占总时间的很大百分比的例程(甚至更好 - ) . (不要寻找高调用次数或高毫秒数。寻找高百分比。)

      为什么?因为这是它负责的总时间的一部分。 如果你能以某种方式使例行程序或线路不花费时间,那么总时间会减少那个百分比。 通常你这样做的方式是让它少打下属电话,或者根本不打。

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

      【讨论】:

      • EQATEC 也不进行逐行分析,除非我弄错了。此外,知道系统例程很长可以让我找到其他方法来解决它。
      • @LazloBonin:“EQATEC 不进行逐行分析”。是的。与理查德·弗拉姆肖特(Richard Flamsholt)一起讨论。他是个好人,也是 EQATEC 的作者。
      • 如果是这样,我会爱上 EQATEC。
      • @LazloBonin:哦,是的,逐行会非常酷。做正确并且仍然很快是很棘手的。不过,可以使用一些技巧来定时系统调用,因此更有可能在某个时候添加。但不能做出任何承诺。
      • @RichardFlamsholt 太棒了!外部 DLL 功能如何?我知道 EQATEC 的工作方式似乎有所不同(重新编译这些 DLL),但将来有可能吗?
      猜你喜欢
      • 2011-09-03
      • 1970-01-01
      • 1970-01-01
      • 2017-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多