首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写一个简单的代码分析器?

如何编写一个简单的代码分析器?
EN

Stack Overflow用户
提问于 2011-07-28 23:32:05
回答 8查看 2.7K关注 0票数 5

我想知道像quantify这样的产品如何在不修改代码的情况下测量函数/方法所花费的时间。有人知道吗?

你有描述如何开始编写你自己的工具的网页吗?

EN

回答 8

Stack Overflow用户

发布于 2011-07-29 00:07:19

非侵入式分析器可以通过分析器将代码编译成可执行形式。该格式不需要与OS所需的实际执行格式匹配。这类似于Java的虚拟机。

分析器使用一个基本单位,例如时钟周期来测量性能。在确定循环的数量之后,可以将总和乘以一个常量,得到一个近似的时间单位。这个值是近似值,因为程序不是直接在处理器上运行,而是在“虚拟”处理器上运行。

其他分析器修改代码以调用"begin measurement“和"end measurement”,其中需要进行分析(通常在函数的开始和结束处)。

当找到特定地址时,JTAG调试器和其他仿真器会调用测量函数。

从嵌入式系统的角度来看,最精确的性能测量技术是找到未使用的引脚或测试点,然后向引脚发送“开始”脉冲,然后发送“结束脉冲”,并使用示波器测量精确的时间差。高级示波器可以提供这种时间差的直方图。

票数 1
EN

Stack Overflow用户

发布于 2011-07-28 23:40:37

你在问一个非常重要的问题。然而,根据我所看到的,分析器在许多情况下确实会修改代码。例如,EQUATEC创建了一个可执行文件和库的副本,这些可执行文件和库被插入指令。其他的将在分析器运行时创建代码的缓存和副本。因此,他们不一定要在您正在使用的代码中编写任何插装,而是插装代码或IL的副本。

票数 0
EN

Stack Overflow用户

发布于 2011-07-28 23:41:16

我的猜测是CPU处于“单步模式”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6861600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档