如果我使用这里描述的检测模型来分析.Net应用程序的性能,这意味着分析工具将更改要分析的可执行文件的可执行代码,以插入性能度量代码?所以我原来的可执行代码被修改了?
http://msdn.microsoft.com/en-us/library/ms242753(VS.80).aspx
你好啊,乔治
发布于 2009-03-10 13:56:01
是的,插入指令的代码与未插入指令的代码不同。这意味着你必须对结果稍加小心-但大多数分析器都会合理地将你的注意力吸引到重要的部分。我从来没有在采样选项上有过太多的幸运-尽管工具通常是有用的。就我个人而言,我喜欢jetBrains产品。
发布于 2009-04-03 15:03:17
采样模式是当你知道代码中的热点区域时,它不会修改你的代码,它只会对所有正在运行的线程的当前callstack进行采样。如果您的线程正在满足地休眠或等待资源(互斥、事件等),那么它将被算作热区。您希望使用此模式来测量负载。
工具模式(跟踪)将测量在每个方法中花费的时间(以周期为单位)。
它需要检测您的代码(使用调试符号),但它将在最后排除它给系统带来的开销。您希望使用此模式来测量单个流程。
发布于 2009-04-05 20:37:40
是的,在检测时,分析器将使用额外的指令修改您的代码,以收集和跟踪必要的性能数据。你永远不会想要发布你的程序集的检测版本,你也不会想要为了调试目的而使用检测的程序集(因为临界区/竞争条件/等肯定会有不同的行为,给额外的检测)。
也就是说,仪表化对于分析要解决的目标来说是非常有价值的。通过收集实际数据并隔离昂贵的操作,可以适当地关注优化工作,并准确测量结果-避免浪费时间、增加复杂性、降低可维护性以及与过早优化相关的所有其他问题。
https://stackoverflow.com/questions/630251
复制相似问题