vtune 放大器 2015 使用什么技术来估计函数调用计数?
我知道它没有提供准确的信息。我想,它使用调用计数 = 函数占用的总时钟周期/单个函数运行的时钟周期
是这样吗?或者有任何分析器可以提供呼叫计数信息而不会造成太多开销。
vtune 放大器 2015 使用什么技术来估计函数调用计数?
我知道它没有提供准确的信息。我想,它使用调用计数 = 函数占用的总时钟周期/单个函数运行的时钟周期
是这样吗?或者有任何分析器可以提供呼叫计数信息而不会造成太多开销。
收集估计的呼叫计数基于 BTS(分支跟踪存储)使用情况。这是英特尔® 处理器中的硬件功能,可将有关所有已采用分支的信息自动存储到内存缓冲区中。函数调用被视为分支,并从此缓冲区中获取。
如果一个函数很热,它在统计上是可见的。因此,一旦硬件事件计数器溢出,它就会被性能监控中断 (PMI) 中断。一旦中断,就会启动分支的收集,当包含分支记录的内存缓冲区溢出时,在接收到分支跟踪中断 (BTI) 时将信息保存在磁盘上(保存到跟踪文件中)。然后收集等待下一个样本并收集另一个“分支束”,依此类推。
收集完成后,分析跟踪文件并将调用计数与其他分支信息分开。考虑到跟踪文件中的调用计数、样本频率和程序中的分支总数 VTune Amplifier XE 估计统计调用计数。很少调用的函数仅出现在少数样本中或根本不出现——根据这些数据估计调用计数与现实相差太远,因此它们的调用计数显示为零。
英特尔® VTune™ 放大器 XE 2015 还使用英特尔® 处理器跟踪技术 ( https://intel.activeevents.com/sf14/connect/fileDownload/session/64115DDAD8D7174736E4D82C5FA3A42C/SF14_ARCS001_100f.pdf ) 以类似方式估计呼叫计数。