【问题标题】:Performance tracing in C#C# 中的性能跟踪
【发布时间】:2009-05-04 15:29:22
【问题描述】:

我想跟踪 c# 移动应用程序内部的性能,以便了解一些长时间运行的方法所需的时间量。目标是了解方法级别的性能。这种跟踪将在运行时决定。

出现的第一个想法是维护一个全局变量“doWeHaveToTrace”,每次调用潜在可跟踪方法时检查它,如果该变量为真,则跟踪它。在这种情况下,我可能会使用 Logger 或 TraceListener 将跟踪信息写入文件。

但是我觉得这个机制很重,因为每个方法都要检查一个变量,而且记录器调用也要编码。

我也考虑过方面编程(在before()after() 方法中插入跟踪代码),但我认为在这个项目中不能允许方面编程。

所以我想知道,有没有其他好的机制可以提供这样的性能跟踪?是否可以跟踪整个方法?并决定在运行时停止或恢复跟踪?

【问题讨论】:

    标签: c# performance logging mobile trace


    【解决方案1】:

    不确定您要跟踪的确切内容,但如果您要跟踪长时间运行的方法之间的时间,也许您最好连接到.NET Profiling API。这是tutorial on usage.

    商业分析器将是另一个更简单的选择。

    【讨论】:

      【解决方案2】:

      你能不能在台式机上,在 IDE 下运行它,然后做一些平常的事情,比如给它计时和/或sampling?

      您一定会发现需要时间并且可以加快速度的事情。

      【讨论】:

        【解决方案3】:

        了解如何在 .NET 中Compile Conditionally with Trace and Debug(假设您使用的是 .NET)。 TraceDebug 类将为您提供开发所需的所有运行时输出。然后,您只需删除 TRACE 编译器指令即可删除已部署应用程序中的所有调试/跟踪代码(以及相关的运行时开销)。

        您可以使用外部分析应用程序进行性能和内存分析。请参阅此处(来自 StackOverflow.com):What Are Some Good .NET Profilers?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-26
          • 2012-07-13
          • 1970-01-01
          • 1970-01-01
          • 2020-11-03
          相关资源
          最近更新 更多