我试图弄清楚程序配置文件如何工作。我正在使用Valgrind。我的第一个问题是:

函数的成本对Valgrind意味着什么?是时间吗?

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

编辑:

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

最佳答案



假设您使用的是Cachegrind和Callgrind工具,它们并没有衡量“成本”;它们测量从在模拟处理器上运行程序所收集的特定统计信息,包括:

  • 缓存读取和丢失
  • 已执行和错误预测的条件分支和间接分支

  • 有关详细信息,请参见documentation

    其他探查器会测量每个功能的耗用时间,或使用采样来确定程序花费最多时间的功能。



    是的,大多数现代计算机都具有不到一微秒的精度计时器,而现代英特尔处理器可让您计算CPU周期。但是Valgrind不会测量经过的时间,因为这在它的模拟机器上是没有意义的。

    关于c++ - Valgrind如何估算功能成本?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14506537/

    10-14 08:15