2

如果我使用此处描述的检测模型来分析 .Net 应用程序性能,这意味着分析工具将更改要分析的可执行文件的可执行代码以插入性能测量代码?所以我原来的可执行代码被修改了?

http://msdn.microsoft.com/en-us/library/ms242753(VS.80).aspx

问候,乔治

4

3 回答 3

1

是的; 插桩代码与未插桩代码不同。这意味着你必须对结果稍加小心——但大多数分析器都会合理地把你的注意力吸引到重要的部分上。我对采样选项从来没有太多的运气——不过,仪器通常很有用。就个人而言,我喜欢jetBrains产品。

于 2009-03-10T13:56:01.287 回答
0

是的,在检测时,分析器将使用附加指令修改您的代码,以收集和跟踪必要的性能数据。您永远不想分发程序集的检测版本,并​​且您不想将检测的程序集用于调试目的(因为关键部分/竞争条件/等在附加检测的情况下肯定会表现不同)。

话虽如此,仪器对于分析旨在解决的目标非常有价值。通过收集实际数据并隔离昂贵的操作,可以适当地集中优化工作并准确测量结果 - 避免浪费时间、增加复杂性、降低可维护性以及与过早优化相关的所有其他问题。

于 2009-04-05T20:37:40.270 回答
0

采样模式是当您知道代码中的热点区域时,它不会修改您的代码,它只会对所有正在运行的线程的当前调用堆栈进行采样。如果您的线程正在睡觉或等待资源(互斥体、事件等),那么它将被视为热点区域。您想使用此模式来测量负载。
仪器模式(跟踪)将测量每种方法花费了多少时间(以周期为单位)。
它需要检测您的代码(使用调试符号),但最终会排除它对系统造成的开销。您想使用此模式来测量单个过程。

于 2009-04-03T15:03:16.723 回答