Intel® VTune™ Amplifier XE 改善了Call Graph的性能问题,采用统计调用(Statistical Call Graph)的方法,把Sampling(采样)和Call Graph(调用图)的功能(过程)合二位一。这种方法不仅帮助用户找到热点函数,而且找到了调用者的函数以及热点函数调用者的贡献度(消耗CPU的时间,对热点函数而言)。
美中不足的是,虽然基于统计的样本收集(Statistical Sampling)给出了热点函数以及调用关系,但是没有给出调用次数(call count)。
而另外一个实验工具Intel® Performance Tuning Utility (PTU) 却能很好的解决这个问题。
下载后,解开这个工具包,无需安装。运行此工具会检查许可证(license), VTune™ Amplifier XE的license可以和PTU共用。本文我们不使用PTU中的Event Based Sampling,就无需卸载VTune™ Amplifier XE的驱动程序以及安装PTU的驱动程序(如有此需求,具体方法见这篇文章)。
直接在解压缩目录下打开Eclipse,如 /home/peter/ptu40_003_lin_intel64/eclipse/eclipse
创建一个PTU project, 关联一个目标应用程序,然后按右键选“Profile as” – “Basic Call Count”, 运行后产生报告。此报告含应用程序运行中调用到的所有模块(包含了系统的库函数和用户的库函数),可以按程序名和调用的次数进行排序。一般而言,我们可以按感兴趣的模块过滤结果。
此结果最大的用处是:基于VTune™ Amplifier XE 的热点报告,知道热点函数的时间和每个调用者的“贡献度”,可以知道函数一共被调次数和每个调用者的调用次数(假设PTU和VTune™ Amplifier 测试时目标程序的执行路径是一致的)。
尤为重要的是,我们要找”最热”的函数中“call count”值最大的。此种函数性能上稍作改进,由于调用次数多,对整个应用程序性能的提高,可以“立竿见影”。