улучшить время запуска исполняемого файла Matlab

Я скомпилировал автономный исполняемый файл Matlab, который я могу запустить на любом компьютере, на котором установлена ​​среда выполнения компилятора MATLAB.

Однако запуск exe занимает 20-30 секунд!

Как мне точно измерить время и самое главное - как уменьшить его до 1-2 секунд.


person Matthias Pospiech    schedule 19.10.2012    source источник
comment
Я не думаю, что вы можете. Но я определенно хотел бы увидеть другой ответ ..   -  person angainor    schedule 19.10.2012
comment
Время запуска (по моему опыту) связано с запуском MCR. Я рассматривал эту проблему раньше и никогда не придумывал способ ее ускорить (действительно раздражает, я согласен). Тем не менее, одно замечание: если вы вызываете несколько автономных exe-файлов подряд, время запуска (опять же по моему опыту) должно быть меньше со второго вызова и далее. Вероятно, это связано с тем, что компьютер достаточно умен, чтобы хранить инициализированный MCR в ОЗУ.   -  person Colin T Bowers    schedule 19.10.2012
comment
Вы имеете в виду, что он работает медленно в первый раз после развертывания/перезагрузки или каждый раз?   -  person Dennis Jaheruddin    schedule 02.05.2014


Ответы (2)


Это взято из блога Яира Альтмана:

Приложение-заставка-заставка может облегчить большую часть боли, связанной с медленным запуском развернутых (скомпилированных) приложений Matlab. Решение для окна-заставки можно найти здесь. Хотя такая оболочка-заставка действительно полезна, также можно добиться реального ускорения запуска скомпилированного приложения с помощью переменной среды MCR_CACHE_ROOT.

Обычно MCR и автономный исполняемый файл распаковываются при каждом запуске во временном каталоге пользователя и удаляются, когда пользователь выходит из системы. По-видимому, когда установлена ​​переменная среды MCR_CACHE_ROOT, эти файлы распаковываются только один раз и сохраняются для последующего повторного использования. Если это сообщение действительно верно, это может значительно ускорить время запуска скомпилированного приложения при последующих вызовах.

В Linux:

export MCR_CACHE_ROOT=/tmp/mcr_cache_root_$USER   # local to host
mkdir -p @MCR_CACHE_ROOT
./myExecutable

В Windows:

REM set MCR_CACHE_ROOT=%TEMP%
set MCR_CACHE_ROOT="C:\Documents and Settings\Yair\Matlab Cache\"
myExecutable.exe

Есть также способы установить эту переменную env на постоянной основе в Windows, если это необходимо...

Установка MCR_CACHE_ROOT особенно важна при запуске исполняемого файла из сетевого расположения (NFS), поскольку распаковка в сетевое расположение может быть довольно медленной. Если исполняемый файл запускается параллельно на разных машинах (например, компьютерный кластер с параллельной программой), то это может даже вызывать блокировки, когда разные кластеры пытаются получить доступ к одному сетевому местоположению. В обоих случаях решение состоит в том, чтобы установить MCR_CACHE_ROOT в локальную папку (например, /tmp или %TEMP%). Если вы планируете повторно использовать извлеченные файлы, то, возможно, вам следует не удалять извлеченные файлы, а использовать их повторно. В противном случае просто удалите временную папку после завершения работы исполняемого файла. В следующем примере $RANDOM — это функция bash, которая возвращает случайное число:

export MCR_CACHE_ROOT=/tmp/mcr$RANDOM
./matlab_executable
rm -rf $MCR_CACHE_ROOT

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

В связи с этим скомпилированный исполняемый файл Matlab может завершиться ошибкой с ошибкой «Не удалось получить доступ к кешу компонента MCR», когда Matlab не может записать в каталог кеша MCR из-за отсутствия прав доступа. Этого можно избежать, задав для MCR_CACHE_ROOT несуществующий каталог или папку, в которой есть глобальные права доступа (/tmp или %TEMP% обычно являются такими доступными для записи папками) — см. соответствующие сообщения здесь и здесь.

person bla    schedule 19.10.2012

Если вы используете deploytool для компиляции своего кода, в разделе Project - Settings-Toolboxes по пути снимите флажки со всех наборов инструментов, которые не нужны вашему исполняемому файлу. Недавно у меня возникла эта проблема, и описанные выше шаги сократили размер исполняемого файла вдвое и значительно сократили время запуска исполняемого файла.

person Peter    schedule 13.08.2014