Измерьте эффективность своего кода

Обзор функций синхронизации эффективности

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 секунды, рассмотрите его выполнение в цикле, а затем среднее значение, чтобы найти время для одного запуска.

Функция cputime vs. tic/toc и timeit

Рекомендуется использовать timeit или tic и toc для измерения эффективности вашего кода. Эти функции возвращают время настенного синхроимпульса. В отличие от этого, tic и toctimeit функция вызывает ваш код несколько раз, и, следовательно, рассматривает первые затраты.

cputime функция измеряет общее время центрального процессора и суммы по всем потокам. Это измерение отличается от времени настенного синхроимпульса, которое timeit или tic/toc вернуться, и может ввести в заблуждение. Для примера:

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

  • Если ваша функция использует четыре процессорных ядра одинаково, время центральный процессор может быть примерно в четыре раза выше, чем время настенного синхроимпульса.

Советы по измерению эффективности

Примите во внимание следующие советы, когда вы измеряете эффективность своего кода:

  • Время достаточно значительного фрагмента кода. В идеале, на выполнение кода, который вы указываете время, должно потребоваться более 1/10 секунды.

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

  • Если вы не пытаетесь измерить стоимость в первый раз, запустите свой код несколько раз. Используйте timeit функция.

  • Избегайте clear all при измерении эффективности. Для получения дополнительной информации смотрите clear функция.

  • Назначьте выход переменной вместо того, чтобы позволить ей использовать по умолчанию ans.

См. также

| | |

Похожие темы