Това е взето от блога на Yair Altman:
Приложението splash wrapper може да облекчи голяма част от болката от бавното стартиране на внедрени (компилирани) Matlab приложения. Решение за Splash прозорец може да се намери тук. Въпреки че такава обвивка на splash е наистина полезна, може да е възможно да се постигне действително ускоряване на стартирането на компилираното приложение с помощта на променливата на средата 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