我正在编写一些计算时间很重要的代码。我使用tic toc函数和profiler来测量时间。它们之间有什么区别?

对于我的一段代码,tic toc函数指出例如时间为3秒,但是profiler中代码的所有行的时间总和并不那么多!

最佳答案

TIC TOCprofiler做非常不同的事情。

TIC TOC测量从TIC call 到TOC call 的经过时间。这包括tic函数本身中的一些开销,而且非常遗憾,并不是完全可靠的。

Profiler测量代码中每个函数执行的cpu时间。这不包括当前未执行任何功能的停机时间(CPU正在执行其他任务,包括运行您的Matlab代码)。

您还应该采取其他措施来确保时间的精确计算:

  • 将代码包装在函数中,以确保它是JIT编译的。
  • 通过在分析之前运行一次功能来预热功能。
  • 多次运行代码并取平均值。
  • 运行tic / toc函数多次,取平均值,然后从总时间中减去。
  • 如果可能,在任何循环之外分配数组,而不是附加到数组。
  • 10-08 04:46