我正在编写一个在Ubuntu上运行的C ++代码。我也使用pthreads。我正在算法性能领域进行研究。
我有这个改进的算法,可以运行6~10个小时。但我所采取的时间测量也包括非常微小的事情,如ms。
此外,我运行它的计算机也在运行其他进程,因此如何确保测量的时间不包括其他进程的时间处理。
答案 0 :(得分:4)
没有单一的"最准确的方式"。与任何测量一样,您必须首先定义要测量的内容。如果您只想测量执行时间,重复执行相同的任务并停止时间是合适的。
如果您想测量CPU实际忙于执行任务的时间,top
可能是您感兴趣的程序。
如果您需要知道在什么子例程中花费了多少时间,linux-utils包中包含perf
,它可以测量单个呼叫时间。
通常,非CPU延迟主导运行时。例如,当您等待网络输入或硬盘驱动器数据时,仅测量CPU花费的时间是没有意义的。
所以:你的问题实际上是一个问题:你想测量什么? "算法性能"建议您从事计算机科学工作,在这种情况下,您应该可以访问大量文献来解释可能感兴趣的内容。没有单一的解决方案"问题"什么是最准确的测量",除非你定义"测量"更紧密;这是你的工作,通常它是衡量事物的难点。