我试图弄清楚程序分析是如何工作的。我正在使用 Valgrind。我的第一个问题是:
函数的成本对 Valgrind 意味着什么?是时间吗?
根据我的阅读,Valgrind 似乎在应该镜像“通用计算机”的虚拟机上运行该程序。然后它会计算这台机器中发生的事件。但是它如何根据这些数据计算函数的成本呢?可以在标准台式 PC 上测量小于 1 毫秒的时间吗?
编辑:
请问callgrind的输出中的一维数字“成本”是什么意思?
函数的成本对 Valgrind 意味着什么?是时间吗?
假设您指的是 Cachegrind 和 Callgrind 工具,它们不会衡量“成本”;他们测量在模拟处理器上运行程序收集的特定统计数据,包括:
有关完整的详细信息,请参阅文档。
其他分析器测量每个函数的经过时间,或使用采样来确定程序在哪些函数中花费的时间最多。
可以在标准台式 PC 上测量小于 1 毫秒的时间吗?
是的,大多数现代计算机都有精度低于一微秒的计时器,现代英特尔处理器允许您计算 CPU 周期。但是 Valgrind 不测量经过的时间,因为这在它的模拟机器上毫无意义。
是的,可以测量时间,在标准台式 PC 上少于 1 毫秒(如果您的意思是具有英特尔处理器)。有一个名为的汇编指令rtdsc
可以执行此操作。