性能计时函数概述
timeit函数和秒表计时器函数tic和toc允许您计算代码运行所需的时间。使用timeit函数严格测量函数执行时间。使用tic和toc可估算运行较小部分代码而非整个函数的时间。
有关代码性能的其他详细信息(例如函数调用信息和各行代码的执行时间),请使用 MATLAB®探查器。有关详细信息,请参阅探查您的代码以改善性能。
计时函数
要测量运行函数所需的时间,请使用timeit函数。timeit函数多次调用指定的函数,并返回测量结果的中位数。它采用要测量的函数的句柄并返回典型执行时间(以秒为单位)。假设您定义了一个函数computeFunction,它采用两个在工作区中定义的输入x和y。您可以使用timeit计算执行函数所需的时间。
f = @() myComputeFunction(x,y); % handle to function timeit(f)
计算部分代码的时间
要计算某部分程序需要多长时间运行或者比较各部分程序的不同实现的速度,可使用秒表计时器函数tic和toc。调用tic可启动计时器,紧接着toc可读取已用时间。
tic % The program section to time. toc
有时程序运行速度太快,导致tic和toc无法提供有用的数据。如果您的代码运行速度快于 1/10 秒,请考虑测量它在循环中运行的时间,然后求平均值以计算单次运行的时间。
Cputime 函数与 tic/toc 和timeit
建议您使用timeit或tic和toc来度量代码的性能。这些函数会返回挂钟时间。与tic和toc不同,timeit函数会调用您的代码多次,因此会考虑首次成本。
cputime函数会测量总 CPU 时间并跨所有线程进行汇总。此测量值不同于timeit或tic/toc返回的挂钟时间,可能会造成误解。例如:
pause函数的 CPU 时间通常很小,但挂钟时间会考虑暂停 MATLAB 执行的实际时间。因此,挂钟时间可能更长。
如果您的函数均匀使用四个处理核,则CPU 时间可能约是挂钟时间的四倍。
有关测量性能的提示
在测量代码的性能时,请考虑以下提示:
计算足够大的一部分代码的时间。理想情况下,您进行计时的代码运行时间应该超过 1/1