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