TIC TOC或Profiler

时间:2014-09-13 10:51:01

标签: matlab profiler

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

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

2 个答案:

答案 0 :(得分:4)

剖析器非常适合查找代码中的瓶颈,以及比较不同算法的相对时序,但我不相信它能为您提供准确的绝对时间。

首先,使用分析器会禁用许多JIT优化,因此代码可能无法以正常方式运行。

使用tictoc计时可能会非常微妙,因为您需要预热代码并运行几次才能获得平均值。

我建议您使用timeit代替,它会为您处理所有这些细微之处。在最近的版本中,timeit是核心MATLAB的一部分。如果您使用的是旧版本,则可以从MATLAB中央文件交换中download it

答案 1 :(得分:2)

TIC TOCprofiler做了很多不同的事情。

TIC TOC测量从TIC呼叫到TOC呼叫所经过的时间。这包括抽动函数本身的一些开销以及非常抱歉的间隔,并不完全可靠。

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

您还应该做些其他事情来确保准确计算时间:

  1. 将代码包装在函数中以确保它是JIT编译的。

  2. 在分析之前运行一次预热功能。

  3. 多次运行代码并平均时间。

  4. 多次运行tic / toc函数,对结果取平均值,然后从总时间中减去该值。

  5. 如果可能,在任何循环之外分配数组,而不是追加到数组。