Методы, чтобы улучшить производительность

Чтобы ускорить производительность вашего кода, рассмотрите эти методы.

Среда

Знайте о фоновых процессах, которые совместно используют вычислительные ресурсы и уменьшают производительность вашего кода MATLAB®.

Структура кода

При организации кода:

  • Используйте функции вместо скриптов. Функции обычно быстрее.

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

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

Методики программирования для производительности

Полагайте, что эти методики программирования улучшают производительность вашего кода.

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

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

  • Поместите независимые операции вне циклов — Если код не оценивает по-другому с каждым for или итерацией цикла while, переместите его за пределами цикла, чтобы избежать избыточных вычислений.

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

  • Используйте операторы короткой схемы — Использование, закорачивающее логические операторы, && и ||, если это возможно. Замыкание накоротко более эффективно, потому что MATLAB оценивает второй операнд только, когда результат не полностью определяется первым операндом. Для получения дополнительной информации смотрите Logical Operators: Short Circuit.

  • Избегайте глобальных переменных — Минимизация использования глобальных переменных является хорошей методикой программирования, и глобальные переменные могут уменьшить производительность вашего кода MATLAB.

  • Постарайтесь не перегружаться созданный-ins — Стараются не перегружать встроенные функции на любых стандартных классах данных MATLAB.

  • Избегайте использования “данных как кода” — Если у вас есть значительные части кода (например, более чем 500 строк), которые генерируют переменные с постоянными значениями, рассматривают построение переменных и сохранение их в MAT-файле. Затем можно загрузить переменные вместо того, чтобы выполнить код, чтобы сгенерировать их.

Советы на определенных функциях MATLAB

Рассмотрите следующие советы на определенных функциях MATLAB при записи производительности критического кода.

  • Постарайтесь не очищать больше кода, чем необходимый. Не используйте clear all программно. Для получения дополнительной информации смотрите clear.

  • Избегайте функций, которые запрашивают состояние MATLAB, такого как inputname, which, whos, exist(var) и dbstack. Самоанализ во время выполнения является в вычислительном отношении дорогим.

  • Избегайте функций, таких как eval, evalc, evalin и feval(fname). Используйте входной параметр указателя на функцию для feval, когда это возможно. Косвенно оценка выражения MATLAB из текста является в вычислительном отношении дорогой.

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

Похожие темы

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