Valgrind如何估算函数的成本?

时间:2013-01-24 16:51:50

标签: c++ valgrind

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

Valgrind的功能成本是多少?是时候了吗?

根据我的阅读,似乎Valgrind在虚拟机上运行该程序,该虚拟机应该镜像“通用计算机”。然后它计算此机器中发生的事件。但是如何根据这些数据计算函数的成本呢?可以在标准台式PC上测量小于1毫秒的时间吗?

enter image description here

编辑:

请问callgrind的输出中的1维数“cost”是什么意思?

2 个答案:

答案 0 :(得分:7)

  

Valgrind的功能成本是多少?是时候了吗?

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

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

有关详细信息,请参阅documentation

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

  

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

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

答案 1 :(得分:1)

是的,可以测量时间,在标准台式PC上小于1毫秒(如果你的意思是有英特尔处理器)。有一个名为rtdsc的汇编指令可以执行此操作。