スタンドアロンの Matlab アプリケーションを構築しました。私は、Matlab 環境からアプリケーションを実行するよりも高速であると予想していましたが、実際には少し遅くなります (反復ごとに 1.3 セグメント対反復ごとに 1.5 セグメント)。それは期待されるパフォーマンスですか、それともパフォーマンスの向上を得る必要がありますか? 実行時間を短縮するのに役立つ展開ツールの設定が見つかりませんでした。
前もって感謝します
スタンドアロンの Matlab アプリケーションを構築しました。私は、Matlab 環境からアプリケーションを実行するよりも高速であると予想していましたが、実際には少し遅くなります (反復ごとに 1.3 セグメント対反復ごとに 1.5 セグメント)。それは期待されるパフォーマンスですか、それともパフォーマンスの向上を得る必要がありますか? 実行時間を短縮するのに役立つ展開ツールの設定が見つかりませんでした。
前もって感謝します
MATLAB Compiler でビルドされたアプリケーションは、MATLAB 内とほぼ同じ速度で実行されるはずです。
MATLAB Compiler は、C コンパイラが C に対して行うのと同じ方法で、MATLAB コードをマシン コードに変換しません。MATLAB コードをアーカイブして暗号化することです (注:pcode
コメントが示唆するだけでなく、適切に暗号化します)。 )、シン実行可能ラッパーを作成し、それらをまとめてパッケージ化します。MATLAB Compiler Runtime (MCR) を使用することもできます。MCR は MATLAB 自体に非常に似ており、グラフィカル ユーザー インターフェイスはなく、自由に再配布できます。
実行可能ファイルを実行すると、MATLAB コードが解凍および復号化され、MCR に対して実行されます。結果と速度の両方の点で、まったく同じように実行する必要があります。
非常に古いバージョンの MATLAB Compiler (バージョン 4.0 より前) は、MATLAB 言語のサブセットを C コードに変換し、これをコンパイルするという別の方法で動作していました。これにより大幅な高速化が実現される可能性がありましたが、サポートされているのは言語のサブセットのみであり、注意しないと結果が異なる場合がありました。同様の機能が別の MATLAB Coder 製品で利用できるようになりました。
パフォーマンスを向上させるために実行できる小さなことがいくつかあります。たとえば、deploytool
アプリケーションで使用するツールボックスを指定できます。deploytool
依存関係チェッカーを使用して、コードが依存している可能性があると考えられるすべての MATLAB 機能をパッケージ化しますが、コードが必要とする関数は実行時に変更される可能性があるため、常に正確に判断できるとは限りません。したがって、注意を怠り、必要以上の内容を含んでいます。必要であることがわかっているツールボックスのみを指定することで、作業を少しスピードアップできます (ビルド プロセスもかなりスピードアップします)。