exponenta event banner

Методы повышения производительности

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

Окружающая среда

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

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

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

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

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

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

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

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

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

  • Векторизация (Vectorize) - вместо записи кода на основе цикла следует использовать матрицу MATLAB и векторные операции. Дополнительные сведения см. в разделе Векторизация.

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

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

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

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

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

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

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

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

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

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

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

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

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