exponenta event banner

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