MATLAB から生成された C++ 共有ライブラリを Win32 コンソール アプリケーションに組み込みました。MATLAB プログラムの実行には MATLAB で 2 ~ 3 秒かかりますが、コンソール アプリケーションの実行には 11 ~ 12 秒かかります。これは MCR の起動時間が原因であると読みました。MCR が初期化された後は、matlab でかかる時間と同じ時間がかかるはずです。では、コンソール アプリケーションの実行に 2 ~ 3 秒かかるように、MCR を常に RAM またはキャッシュにロードまたは初期化するにはどうすればよいでしょうか。MCR が継続的にロードされるように、無限ループを作成する必要がありますか?? 私は Windows OS で作業しており、PHP からコンソール アプリケーションを呼び出しています。そのためのチュートリアルやリンクはありますか?
MCR_CACHE_ROOT をフォルダー (一時的ではない) を指す環境変数として追加しました。私のコンソールアプリケーションコードは次のとおりです。
// shoes_shared.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "shoes_sharedlibrary.h"
#include <iostream>
#include <string.h>
#include "mex.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
/* Call the MCR and library initialization functions */
//const char *pStrings[]={"-nojvm","-nojit"};
// if (!mclInitializeApplication(pStrings,2))
// {
// fprintf(stderr, "Could not initialize MCR for the application.\n");
// return -1;
// }
if (!shoes_sharedlibraryInitialize())
{
exit(1);
}
mwArray img(argv[1]);
double wt1 = _tstof(argv[2]);
mwArray C(wt1);
double wt2 = _tstof(argv[3]);
mwArray F(wt2);
double wt3 = _tstof(argv[4]);
mwArray T(wt3);
double wt4 = _tstof(argv[5]);
mwArray S(wt4);
test_shoes(img,C,F,T,S);
//shoes_sharedlibraryTerminate();
//mclTerminateApplication();
return 0;
}
上記の行にコメントしましたが、それは速くなるが運が悪いと考えています。何か助けはありますか?