exponenta event banner

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

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

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 vs. tic/toc и timeit

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

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

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

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

Советы по измерению производительности

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

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

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

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

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

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

См. также

| | |

Связанные темы