как ускорить выполнение программы Matlab?

существуют ли методы, позволяющие ускорить выполнение кода MATLAB?

Я говорю о вещах, которые могут сделать Мой компьютер быстрее (например, остановить некоторые .exe или программное обеспечение для повышения производительности ПК). Я заметил, что иногда мой компьютер выполняет одну и ту же задачу в два разных раза: например, он может запустить программу за 45 секунд, а ту же программу снова за 10 минут.

14
задан quack quixote
29.03.2023 17:30 Количество просмотров материала 3166
Распечатать страницу

4 ответа

это MATLAB, который работает медленно на вашем компьютере или, скорее, программы, которые вы написали в MATLAB?

MATLAB интенсивно использует динамическое выделение и перераспределение памяти; изменение размера матрицы или массива может быть очень медленным и недетерминированным; если матрица или массив растет, выделяется новая память и существующие данные копируются в новую память перед удалением старой копии. Вы можете избежать этого трэша памяти, предварительно выделив такие массивы: например, это код:

x = 0;
for k = 2:1000
   x(k) = x(k-1) + 5;
end

причины x для изменения размера на каждой итерации и будет работать очень медленно. Для сравнения следующий код:

x = zeros(1, 1000);
for k = 2:1000
   x(k) = x(k-1) + 5;
end

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

сайт MathWorks имеет всей страницы подробно этот и другие методы повышения производительности; страница охватывает следующее:

  • Предварительное Выделение Массивов
  • Использование Распределенных Массивы для больших наборов данных
  • по возможности замените на parfor (Parallel for)
  • ограничение размера и сложности
  • назначение переменных
  • Использование Соответствующих Логических Операторов
  • Перегрузка Встроенных Функций
  • Функции, Как Правило, Быстрее, Чем Скрипты
  • загрузка и сохранение быстрее, чем функции файлового ввода/вывода
  • Векторизации Циклов
  • Избегать Большого Фона Процессы

обратите внимание, что решение, которое вы предложили, последнее в списке MathWorks, вы должны сначала посмотреть на все другие моменты, если вы не делаете что-то явно ресурсоемкое, например, запуск виртуальной машины или воспроизведение видео высокой четкости одновременно с запуском MATLAB, глядя на другие запущенные процессы, вероятно, потеют мелкие вещи.

7
отвечен Clifford 2023-03-31 01:18

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

3
отвечен 2023-03-31 03:35

Если время выполнения вашего кода сильно изменчиво, то, скорее всего, у вас есть проблема, когда иногда, в какой-то степени, вы граничите с виртуальной памятью. Когда MATLAB должен использовать пространство подкачки, все резко замедляется. В конце концов, вы используете дисковое пространство для замены доступности физической оперативной памяти. Это лучшая причина, которую я могу предложить для кода, который изменяется во времени на порядок за время, затраченное на разные запуски.

используйте инструмент Profiler определите, куда идет время. Посмотрите внимательно на эти линии. Вы создаете большой массив, даже если это делается временно в какой-то вызываемой функции?

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

конечно, если это так, как я предлагаю, то решение тоже логично.

  • сделать алгоритм более эффективным с точки зрения памяти. Это всегда хорошо вещь.

  • получить больше оперативной памяти, если вы в настоящее время менее 2 ГБ.

  • используйте 64-битную версию MATLAB вместе с получением большего объема оперативной памяти.

3
отвечен 2023-03-31 05:52

по мне, это должно быть какое-то узкое место в системе, такое как доступ к диску или проблема с заменой памяти. Попробуйте увидеть, что появляется в Process Explorer, там вы можете узнать, что происходит в системе.

2
отвечен jdehaan 2023-03-31 08:09

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх