timeit

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

Синтаксис

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

Описание

пример

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

пример

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

Примеры

свернуть все

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

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

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

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

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

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

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

t2 = timeit(f,3)
t2 = 0.0047

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

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 рекурсивно

Алгоритмы

timeit вызывает заданную функцию многократно и вычисляет медиану измерений.

Введенный в R2013b

Была ли эта тема полезной?