timeit

Измерьте время, необходимое для выполнения функции

Описание

пример

t = timeit(f) измеряет время (в секундах), необходимое для запуска функции, заданной указателем на функцию f. В порядок для выполнения робастного измерения timeit вызывает указанную функцию несколько раз и возвращает медиану измерений. Если функция запускается быстро, timeit может вызывать функцию много раз.

пример

t = timeit(f,numOutputs) вызывает f с желаемым количеством выходов, numOutputs. По умолчанию timeit вызывает функцию f с одним выходом (или без выходы, если функция не возвращает выходов).

Примеры

свернуть все

Использование timeit по времени вызова функции в date. Этот пример использует указатель на функцию, которая не принимает входов.

f = @date;
t = timeit(f)
t = 5.9933e-05

Время комбинации нескольких математических матричных операций: матричного транспонирования, поэлементного умножения и суммирования столбцов.

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

Определите, сколько времени требуется для запуска svd с одним выходным аргументом, s = svd(X).

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

Сравните результаты с svd с тремя выходными аргументами, [U,S,V] = svd(X).

t2 = timeit(f,3)
t2 = 0.0030

Создайте короткую функцию, чтобы выделить матрицу с помощью вложенных циклов. Предварительное выделение массива с помощью вложенного цикла неэффективно, но показано здесь в иллюстративных целях.

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) синтаксис.

Совет

  • Следующие действия приводят к неожиданному выходу:

    • Использование timeit между tic и toc
    • Использование timeit к времени функции, которая включает вызовы к tic и toc
    • Использование timeit рекурсивно

Введенный в R2013b