11.15

分析器是一个可以生成另外一个程序的执行时间的统计结果的程序。分析器可以输出一份
包含每个语句或函数的执行频度、每个函数的累积执行时间的报表。
许多编译器套件,如 Windows 上的 Visual Studio  Linux 上的 GCC 都带有分析器,可以
帮助我们找到程序中的热点。微软曾经只在价格昂贵的 Visual Studio 版本中提供了分析
器,但是自 Visual Studio 2015 社区版开始,微软开始向开发者提供免费的分析器。当然,
 Windows 上还有其他开源的分析器以及对应早期的 Visual Studio 版本的分析器。
有几种方式可以实现一个分析器。一种可以同时支持 Windows  Linux 的方法如下。
(1) 程序员设置一个特殊的可以分析程序中所有函数的编译选项,重新编译一次程序,让
程序变为可分析的状态。这涉及在每个函数的开始和结束处添加一些额外的汇编语言
指令。
(2) 程序员将可分析的程序链接到分析库上。
(3) 每次这个可分析的程序运行时都会在磁盘上生成一张分析表profiling table
(4) 分析器读取分析表,然后生成一系列可阅读的文字或图形报告。
另外一种分析方法是这样的。

(5) 通过将优化前的程序链接至分析库上使其变为可分析状态。分析库中的例程会以非常高
的频率中断程序的执行,记录指令指针的值。
(6) 每次可分析的程序运行时都会在磁盘上生成一张分析表。
(7) 分析器读取分析表,然后生成一系列可阅读的文字或图形报告。

posted @ 2024-12-16 14:29  欧吼吼  阅读(2)  评论(0编辑  收藏  举报