文档

本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

timeit

测量运行函数所需的时间

语法

t = timeit(f)
t = timeit(f,numOutputs)

说明

示例

t = timeit(f) 测量运行函数句柄 f 指定的函数所需的常规时间(以秒为单位)。

示例

t = timeit(f,numOutputs) 使用所需的输出数量 numOutputs 调用 f。默认情况下,timeit 调用带有一个输出,或者不带输出的函数 f,后者是指函数本身不返回任何输出的情况。

示例

全部折叠

使用 timeit 来确定进行 date 函数调用的时间。此示例使用一个不接受输入的函数的句柄。

f = @date;
t = timeit(f)
t = 1.3529e-04

确定计算多个数学矩阵运算组合所需的时间:矩阵转置、逐元素乘积以及列求和。

A = rand(12000,400);
B = rand(400,12000);
f = @() sum(A.'.*B, 1);
timeit(f)
ans = 0.0639

确定运行带输出参数 s = svd(X) 运行 svd 所需的时间。

X = rand(100);
f = @() svd(X);
t1 = timeit(f)
t1 = 0.0091

将结果与使用三个输出参数的 svd ([U,S,V] = svd(X)) 进行比较。

t2 = timeit(f,3)
t2 = 0.0179

创建一个简短函数以使用嵌套循环分配矩阵。使用嵌套循环预分配数组的效率并不高,在此仅出于演示目的使用此方法。

function mArr = preAllocFcn(x,y)
for m = 1:x
    for n = 1:y
        mArr(m,n) = 0;
    end
end
end

比较使用嵌套循环与使用 zeros 函数为矩阵分配零的时间。

x = 1000;
y = 500;
g = @() preAllocFcn(x,y);
h = @() zeros(x,y);
diffRunTime = timeit(g)-timeit(h)
diffRunTime =

    0.1584

输入参数

全部折叠

要测量的函数,指定为函数句柄。f 为不接受输入的函数的句柄,或者为带有空参数列表的匿名函数的句柄。

f 的所需输出数量,指定为整数。如果 f 指定的函数的输出数量可变,将由 numOutputs 来确定 timeit 调用函数时所使用的语法。例如,svd 函数可以返回单个输出 s 或三个输出 [U,S,V]。将 numOutputs 设置为 1 可确定执行 s = svd(X) 语法所用的时间,将其设置为 3 则可确定执行 [U,S,V] = svd(X) 语法所用的时间。

提示

  • 以下操作会导致意外输出:

    • tictoc 之间使用 timeit
    • 使用 timeit 确定包含 tictoc 调用的函数的时间
    • 以递归方式使用 timeit

算法

timeit 多次调用指定的函数,并计算测量结果的中位数。

在 R2013b 中推出

此主题对您有帮助吗?