2

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

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

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

在此处输入图像描述

编辑:

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

4

2 回答 2

7

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

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

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

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

其他分析器测量每个函数的经过时间,或使用采样来确定程序在哪些函数中花费的时间最多。

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

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

于 2013-01-24T16:56:46.607 回答
1

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

于 2013-01-24T16:55:31.883 回答