Измерение уровня вашей программы

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

Функция 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 и toc,  вызовов функции timeit ваш код многократно, и, поэтому, рассматривает новые затраты.

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

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

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

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

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

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

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

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

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

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

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

| | |

Похожие темы

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