我想在c#移动应用程序中跟踪性能,以便了解一些长时间运行的方法所需的时间。目标是了解方法层面的表现。 此跟踪将在运行时决定。
首先想到的是维护一个全局变量“doWeHaveToTrace”,每次调用一个潜在的可跟踪方法时检查它,并在该变量为真时跟踪它。 在这种情况下,我可能会使用Logger或TraceListener将跟踪信息写入文件。
但我认为这种机制非常繁重,因为必须在每种方法中检查变量,并且必须对记录器调用进行编码。
我还考虑了方面编程(在before()和after()方法中插入跟踪代码),但我不认为在这个项目中可以允许方面编程。
所以我想知道,还有其他任何可以提供此类性能追踪的良好机制吗?是否可以追踪整个方法?并决定在运行时停止或恢复跟踪?
我希望我很清楚, 感谢
答案 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?
你必然会发现需要时间并且可以加速的事情。