Valgrind如何估算函数的成本?

Mar*_*dik 2 c++ valgrind

我想弄清楚程序分析是如何工作的.我正在使用Valgrind.我的第一个问题是:

Valgrind的功能成本意味着什么?是时候了吗?

从我读到的内容来看,似乎Valgrind在虚拟机上运行该程序,该虚拟机应该反映"通用计算机".然后它计算此机器中发生的事件.但是它如何根据这些数据计算函数的成本呢?可以在标准台式PC上测量小于1毫秒的时间吗?

在此输入图像描述

编辑:

请问callgrind的输出中的1维数"成本"是什么意思?

Mik*_*our 7

Valgrind的功能成本意味着什么?是时候了吗?

假设您指的是Cachegrind和Callgrind工具,它们不会测量"成本"; 它们测量从模拟处理器上运行程序收集的特定统计数据,包括:

  • 缓存读取和未命中
  • 执行和错误预测的条件和间接分支

有关完整详细信息,请参阅文档.

其他分析器测量每个函数的经过时间,或使用抽样来确定程序花费最多时间的函数.

可以在标准台式PC上测量小于1毫秒的时间吗?

是的,大多数现代计算机的定时器精度小于1微秒,现代英特尔处理器允许您计算CPU周期.但Valgrind并没有测量经过的时间,因为这在模拟机器上毫无意义.