c#中的性能跟踪

时间:2009-05-04 15:29:22

标签: c# performance logging mobile tracing

我想在c#移动应用程序中跟踪性能,以便了解一些长时间运行的方法所需的时间。目标是了解方法层面的表现。 此跟踪将在运行时决定。

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

但我认为这种机制非常繁重,因为必须在每种方法中检查变量,并且必须对记录器调用进行编码。

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

所以我想知道,还有其他任何可以提供此类性能追踪的良好机制吗?是否可以追踪整个方法?并决定在运行时停止或恢复跟踪?

我希望我很清楚, 感谢

3 个答案:

答案 0 :(得分:2)

不确定您要追踪的确切内容,但如果您正在尝试追踪长时间运行的方法之间的时间,那么您最好还是可以挂钩.NET Profiling API。这是tutorial on usage.

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

答案 1 :(得分:0)

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

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

享受,

Robert C. Cartaino

答案 2 :(得分:0)

您可以在桌面计算机上,在IDE下运行它,并执行常规操作,例如计时和/或sampling?

你必然会发现需要时间并且可以加速的事情。