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