我想知道像quantify这样的产品如何在不修改代码的情况下测量函数/方法所花费的时间。有人知道吗?
你有描述如何开始编写你自己的工具的网页吗?
发布于 2011-07-29 00:07:19
非侵入式分析器可以通过分析器将代码编译成可执行形式。该格式不需要与OS所需的实际执行格式匹配。这类似于Java的虚拟机。
分析器使用一个基本单位,例如时钟周期来测量性能。在确定循环的数量之后,可以将总和乘以一个常量,得到一个近似的时间单位。这个值是近似值,因为程序不是直接在处理器上运行,而是在“虚拟”处理器上运行。
其他分析器修改代码以调用"begin measurement“和"end measurement”,其中需要进行分析(通常在函数的开始和结束处)。
当找到特定地址时,JTAG调试器和其他仿真器会调用测量函数。
从嵌入式系统的角度来看,最精确的性能测量技术是找到未使用的引脚或测试点,然后向引脚发送“开始”脉冲,然后发送“结束脉冲”,并使用示波器测量精确的时间差。高级示波器可以提供这种时间差的直方图。
发布于 2011-07-28 23:40:37
你在问一个非常重要的问题。然而,根据我所看到的,分析器在许多情况下确实会修改代码。例如,EQUATEC创建了一个可执行文件和库的副本,这些可执行文件和库被插入指令。其他的将在分析器运行时创建代码的缓存和副本。因此,他们不一定要在您正在使用的代码中编写任何插装,而是插装代码或IL的副本。
发布于 2011-07-28 23:41:16
我的猜测是CPU处于“单步模式”。
https://stackoverflow.com/questions/6861600
复制相似问题