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

Обзор функций синхронизации производительности

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

Функция cputime по сравнению с tic/toc и timeit

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

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

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

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

Советы для того, чтобы измерить уровень

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

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

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

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

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

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

Смотрите также

| | |

Похожие темы