timeit
функция и функции секундомера, tic
и toc
, позволяет вам времени, сколько времени занимает ваш код для запуска. Используйте timeit
функция для строгого измерения времени выполнения функции. Использование tic
и toc
оценить время для небольших фрагментов кода, которые не являются полными функциями.
Для получения дополнительной информации о эффективности вашего кода, такой как информация о вызове функции и время выполнения отдельных строк кода, используйте MATLAB® Профилировщик. Для получения дополнительной информации смотрите Профиль вашего кода для повышения эффективности.
Чтобы измерить время, необходимое для запуска функции, используйте timeit
функция. The 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
.