C++ 为什么将数据从MATLAB传递到mex如此缓慢?
我创建了这个MEX函数,它接受如下参数:C++ 为什么将数据从MATLAB传递到mex如此缓慢?,c++,matlab,matrix,mex,C++,Matlab,Matrix,Mex,我创建了这个MEX函数,它接受如下参数: toSolve(域,model.one,model.two,model.three,model.four,bc,model.T,model.dt,[start model.five]) 其中模型是一个MATLAB结构,具有矩阵1,2,3,5,以及具有三个矩阵的1x3单元4 每个矩阵都是巨大的(~500000 x 3)。当我将数据传递到mex函数(即到solve)时,加载需要花费很长时间。在我的mex函数中,第一行是打印输出: void mexFuncti
toSolve(域,model.one,model.two,model.three,model.four,bc,model.T,model.dt,[start model.five])
其中模型
是一个MATLAB结构
,具有矩阵1
,2
,3
,5
,以及具有三个矩阵的1x3单元4
每个矩阵都是巨大的(~500000 x 3)。当我将数据传递到mex函数(即到solve
)时,加载需要花费很长时间。在我的mex函数中,第一行是打印输出:
void
mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
{
/* Start */
mexPrintf("\n About to start");
//CODE//
}
打印即将开始的那一行要花很长时间。代码本身运行得非常快。我不知道为什么要花很长时间才能把数据传给mex?我做错了什么?可能是您的计算花费了时间,而您没有快速看到打印语句的原因是缓冲区没有被强制刷新(即,实际写入屏幕)。有关更多信息,请参阅 简而言之,如果您添加:
mexEvalString("drawnow;")
在mexPrintf
命令之后。如果您看到快速写入屏幕的文本,这将有助于您确认计算是否需要时间,而不是将数据传递到MEX