我正在编写一些计算时间很重要的代码。我使用tic toc函数和profiler来测量时间。他们之间有什么区别?
对于我的一段代码,tic toc函数声明,例如,时间是3秒,但在profiler中,我的所有代码行的时间之和并不多!
发布于 2014-09-13 11:22:10
TIC TOC和profiler做的事情完全不同。
TIC TOC测量从TIC调用到TOC调用的经过时间。这包括tic函数本身的一些开销,对于非常遗憾的间隔,并不完全可靠。
分析器测量代码中每个函数执行的cpu时间。这不包括当前不执行任何功能的停机时间( cpu正在执行其他任务,包括运行matlab代码)。
为了确保时间的精确计算,你还应该做其他的事情:
发布于 2014-09-13 13:32:43
分析器可以很好地找到代码中的瓶颈,并比较不同算法的相对时间,但我不相信它能给出准确的绝对时间。
首先,使用分析器将禁用许多JIT优化,因此代码很可能不会以正常的方式运行。
使用tic和toc进行计时可能非常微妙,因为您需要对代码进行预热并运行几次才能获得平均值。
我建议您使用timeit,它为您处理所有这些微妙之处。在最近的版本中,timeit是核心MATLAB的一部分。如果您使用的是旧版本,则可以使用中的下载它。
https://stackoverflow.com/questions/25822459
复制相似问题