Методы повышения эффективности

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

Окружение

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

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

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

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

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

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

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

Рассмотрите эти методики программирования, чтобы улучшить эффективность вашего кода.

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

  • Векториз - вместо записи основанного на цикле кода рассмотрите использование матрицы MATLAB и векторных операций. Для получения дополнительной информации см. Раздел «Векторизация».

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

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

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

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

  • Избегайте перегрузки встроенных - Избегайте перегрузки встроенных функций на любых стандартных классах данных MATLAB.

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

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

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

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

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

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

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

Похожие темы