vtune 函数调用次数

Posted

技术标签:

【中文标题】vtune 函数调用次数【英文标题】:vtune function call count 【发布时间】:2014-11-26 09:28:16 【问题描述】:

vtune 放大器 2015 使用什么技术来估算 函数调用次数?

我知道它没有提供准确的信息。 我想,它使用 调用计数 = 函数占用的总时钟周期 / 单个函数运行的时钟周期

是这样吗? 或者有任何分析器可以提供调用计数信息而不会造成太多开销。

【问题讨论】:

【参考方案1】:

收集估计的呼叫计数基于 BTS(分支跟踪存储)使用情况。这是英特尔® 处理器中的硬件功能,可将有关所有已采用分支的信息自动存储到内存缓冲区中。函数调用被视为分支,并从该缓冲区中获取。

如果一个函数很热,它在统计上是可见的。因此,一旦硬件事件计数器溢出,它就会被性能监控中断 (PMI) 中断。一旦中断,就会启动分支的收集,当包含分支记录的内存缓冲区溢出时,在接收到分支跟踪中断 (BTI) 时将信息保存在磁盘上(保存到跟踪文件中)。然后收集等待下一个样本并收集另一个“分支束”,依此类推。

收集完成后,将分析跟踪文件并将调用计数与其他分支信息分开。考虑到跟踪文件中的调用计数、样本频率和程序中的分支总数 VTune Amplifier XE 估计统计调用计数。很少被调用的函数只出现在少数样本中或根本不出现——根据这些数据估计调用计数与实际情况相去甚远,因此它们的调用计数显示为零。

更多信息请点击此处:https://software.intel.com/en-us/articles/calculating-estimated-call-counts-with-intel-vtune-amplifier-xe-2013

英特尔® VTune™ Amplifier XE 2015 还使用英特尔® 处理器跟踪技术 (https://intel.activeevents.com/sf14/connect/fileDownload/session/64115DDAD8D7174736E4D82C5FA3A42C/SF14_ARCS001_100f.pdf) 以类似方式估计调用计数。

【讨论】:

以上是关于vtune 函数调用次数的主要内容,如果未能解决你的问题,请参考以下文章

VTune 中未显示某些函数调用

在 intel-vtune 中,被调用函数的有效总时间高于调用函数的总时间

如何计算fibonacci函数的递归调用次数

Java如何控制方法的调用次数?

VTune GUI 中没有调用堆栈信息

优化调用昂贵函数的次数