2012-10-19 91 views
6

MATLABコンパイラランタイムがインストールされているコンピュータで実行できるmatlabスタンドアロンexeファイルをコンパイルしました。matlab実行可能ファイルの起動時間を改善する

ただし、exeを起動するには20〜30秒かかります!

どのように正確に、そして最も重要な時間を測定することができますか?どのようにして1〜2秒に減らすことができますか?

+0

私はあなたができるとは思わない。しかし、私は間違いなく別の答えを見たいと思います.. – angainor

+0

起動時間は、私の経験上、MCRの開始に関連しています。私は以前この問題を見てきましたし、それをスピードアップする方法を思いつきませんでした(私は同意します)。ただし、1つの注意点:複数のスタンドアロンのexeを連続して呼び出すと、起動時間が(2回目の呼び出しから)もう少し少なくて済むようになります。おそらくRAMに初期化されたMCRを保持するのに十分なほど賢いコンピュータと関係があるでしょう。 –

+0

デプロイメント/リブート後、または毎回遅いことを意味しますか? –

答えて

5

これはYair Altman's blogから取り出される:

スプラッシュラッパーアプリケーションが展開(コンパイル)MATLABアプリケーションの起動が遅くの痛みの多くを軽減することができます。 A Splash window solution can be found here。このようなスプラッシュラッパーは本当に便利ですが、MCR_CACHE_ROOT環境変数を使用して、コンパイルされたアプリケーションの起動を実際に高速化することもできます。

通常、MCRとスタンドアロンの実行可能ファイルは、ユーザーの一時ディレクトリの起動時にアンパックされ、ユーザーがログアウトすると削除されます。どうやら、MCR_CACHE_ROOT環境変数が設定されていると、これらのファイルは一度アンパックされ、後で再利用できるように保持されます。このレポートが本当に真実であれば、これは後続の呼び出しでコンパイルされたアプリケーションの起動時間を大幅に短縮する可能性があります。 Linuxの

:Windowsでは

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

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

必要な場合は、Windows上で永続的にこのENV変数を設定する方法もあります...

がMCR_CACHE_ROOTを設定することが特に重要です実行可能ファイルをネットワーク(NFS)の場所から実行すると、ネットワークの場所への展開が非常に遅くなる可能性があります。実行可能ファイルが異なるマシン(例えば、並列プログラムを実行しているコンピューター・クラスター)上で並列に実行されている場合、異なるクラスターが同じネットワーク・ロケーションにアクセスしようとすると、cause lock-outsとなることさえあります。いずれの場合も、MCR_CACHE_ROOTをローカルフォルダ(たとえば、/ tmpまたは%TEMP%)に設定することが解決策です。抽出したファイルを再利用する予定がある場合は、抽出したファイルを削除して再利用しないでください。それ以外の場合は、実行可能ファイルの終了後に一時フォルダを削除するだけです。以下の例では、$ RANDOM乱数を返すbashの関数である:MathWorks technical solutionと関連記事hereで説明したようにMCR_CACHE_ROOT設定

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

はまた、デプロイされたアプリケーションで他のパフォーマンスのボトルネックを解決するために使用することができます。

関連する問題では、コンパイルされたMatlab実行ファイルは、アクセス権がないためにMCRキャッシュディレクトリに書き込めないときに、MCRコンポーネントキャッシュエラーにアクセスできませんでした。これは、MCR_CACHE_ROOTをa non-existent directoryに設定するか、グローバルアクセス権があるフォルダ(通常は/ tmpまたは%TEMP%はそのような書き込み可能なフォルダです)に設定することで回避できます - 関連記事hereおよびhereを参照してください。

0

コードをコンパイルするためにdeploytoolを使用している場合は、プロジェクト - 設定 - パス上のツールボックスで、実行可能ファイルで不要なツールボックスをオフにします。私は最近この問題を抱えており、上記の手順で実行可能ファイルのサイズを半減させ、実行可能ファイルの開始時間を大幅に短縮しました。

関連する問題