Функция timeit
и таймерные функции секундомера, tic
и toc
, включают, вы, чтобы измерить, сколько времени ваш код берете, чтобы запуститься. Используйте функцию timeit
для строгого измерения функционального времени выполнения. Используйте tic
и toc
, чтобы оценить время для меньших фрагментов кода, которые не являются полными функциями.
Для дополнительных деталей о производительности вашего кода, таких как информация о вызове функции и время выполнения отдельных строк кода, используют MATLAB® Profiler. Для получения дополнительной информации смотрите Профиль, чтобы Улучшать Производительность.
Чтобы измерить время, требуемое запускать функцию, используйте функцию 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 секунда, полагайте, что измерение его запускающийся в цикле, и затем среднем значении находит время для одного выполнения.
Рекомендуется, чтобы вы использовали timeit
или tic
и toc
, чтобы измерить уровень вашего кода. Эти функции возвращают тактовое стеной время. В отличие от tic
и toc
, вызовов функции timeit
ваш код многократно, и, поэтому, рассматривает новые затраты.
Функция cputime
измеряет общее процессорное время и суммы через все потоки. Это измерение отличается с тактового стеной времени, когда timeit
или tic
/toc
возвращаются и могли вводить в заблуждение. Например:
Процессорное время для функции pause
является обычно маленьким, но тактовое стеной время составляет фактическое время, когда выполнение MATLAB приостановлено. Поэтому тактовое стеной время может быть более длительным.
Если ваша функция использует четыре ядра обработки одинаково, процессорное время могло бы быть приблизительно в четыре раза выше, чем тактовое стеной время.
Рассмотрите следующие советы, когда вы измерите уровень своего кода:
Время достаточно значительный фрагмент кода. Идеально, код, который вы синхронизируете, должен взять больше, чем 1/10 секунда, чтобы запуститься.
Поместите код, который вы пробуете ко времени в функцию вместо того, чтобы синхронизировать его в командной строке или в скрипте.
Если вы не пытаетесь измерить в первый раз стоимость, запустить ваш код многократно. Используйте функцию timeit
.
Избегайте clear all
при измерении уровня. Для получения дополнительной информации смотрите, что clear
функционирует.
Присвойте свой вывод переменной вместо того, чтобы позволить ему значение по умолчанию к ans
.