Чтобы ускорить производительность вашего кода, рассмотрите эти методы.
Знайте о фоновых процессах, которые совместно используют вычислительные ресурсы и уменьшают производительность вашего кода MATLAB®.
При организации кода:
Используйте функции вместо скриптов. Функции обычно быстрее.
Предпочтите локальные функции по вложенным функциям. Используйте эту практику особенно, если для функции не нужно к переменным доступа в основной функции.
Используйте модульное программирование. Чтобы избежать больших файлов и файлов с кодом, к которому нечасто получают доступ, разделите свой код в простые и связные функции. Эта практика может уменьшить новые затраты на выполнение.
Полагайте, что эти методики программирования улучшают производительность вашего кода.
Предварительно выделите — Вместо того, чтобы постоянно изменить размер массивов, считайте предварительное выделение максимальной суммы пробела требуемым для массива. Для получения дополнительной информации смотрите Предварительное выделение.
Векторизуйте — Вместо того, чтобы писать основанный на цикле код, рассмотрите использование матрицы MATLAB и векторных операций. Для получения дополнительной информации смотрите Векторизацию.
Поместите независимые операции вне циклов — Если код не оценивает по-другому с каждым for
или итерацией цикла while
, переместите его за пределами цикла, чтобы избежать избыточных вычислений.
Создайте новые переменные, если тип данных изменяется — Создают новую переменную вместо того, чтобы присвоить данные другого типа к существующей переменной. Изменение класса или формы массивов существующей переменной занимает дополнительное время к процессу.
Используйте операторы короткой схемы — Использование, закорачивающее логические операторы, &&
и ||
, если это возможно. Замыкание накоротко более эффективно, потому что MATLAB оценивает второй операнд только, когда результат не полностью определяется первым операндом. Для получения дополнительной информации смотрите Logical Operators: Short Circuit
.
Избегайте глобальных переменных — Минимизация использования глобальных переменных является хорошей методикой программирования, и глобальные переменные могут уменьшить производительность вашего кода MATLAB.
Постарайтесь не перегружаться созданный-ins — Стараются не перегружать встроенные функции на любых стандартных классах данных MATLAB.
Избегайте использования “данных как кода” — Если у вас есть значительные части кода (например, более чем 500 строк), которые генерируют переменные с постоянными значениями, рассматривают построение переменных и сохранение их в MAT-файле. Затем можно загрузить переменные вместо того, чтобы выполнить код, чтобы сгенерировать их.
Рассмотрите следующие советы на определенных функциях MATLAB при записи производительности критического кода.
Постарайтесь не очищать больше кода, чем необходимый. Не используйте clear all
программно. Для получения дополнительной информации смотрите clear
.
Избегайте функций, которые запрашивают состояние MATLAB, такого как inputname
, which
, whos
,
и exist(var)
dbstack
. Самоанализ во время выполнения является в вычислительном отношении дорогим.
Избегайте функций, таких как eval
, evalc
, evalin
и
. Используйте входной параметр указателя на функцию для feval(fname)
feval
, когда это возможно. Косвенно оценка выражения MATLAB из текста является в вычислительном отношении дорогой.
Избегайте программируемого использования cd
, addpath
и rmpath
, если это возможно. Изменение пути MATLAB в течение времени выполнения приводит к перекомпиляции кода.