Я включил общую библиотеку C++, созданную из MATLAB в консольном приложении Win32. Программа MATLAB занимает 2-3 секунды для выполнения в MATLAB, но консольное приложение занимает 11-12 секунд для выполнения. Я читал это из-за времени запуска MCR, и я верю, что после инициализации MCR он должен уйти в то же время, что и в MATLAB. Итак, как я могу загрузить или инициализировать MCR, чтобы он всегда находился в ОЗУ или кеше, чтобы запустить консольное приложение на 2-3 секунды? Должен ли я сделать цикл бесконечности, чтобы MCR загружался непрерывно? Я работаю над ОС Windows, и я вызываю консольное приложение из PHP. Любые учебники или ссылки для этого?Как инициализировать и загрузить MCR
Я добавил 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;
}
я прокомментировал строки выше, думая, что он будет делать это быстрее, но не повезло. Любая помощь?
Как вы хотите сохранить MCR в памяти между двумя вызовами в консольном приложении? Вы можете поместить его в отдельный процесс, который продолжает работать, или просто попытаться уменьшить время загрузки. Одна из возможностей, если у вас есть GUI, - это уже отобразить GUI и загрузить MCR в спину. Также .. ли библиотека загружается автоматически или вы можете ее откладывать в некотором роде? –