MEX Code in Matlab Wrapper

2 visualizaciones (últimos 30 días)
Ubaid Ullah
Ubaid Ullah el 1 de Jul. de 2012
I have the following code:
for i=1:N,
some_mex_file();
end
My MEX file does the following:
  • Declares an object, of a class I defined, that has 2 large memory blocks, i.e., 32x2048x2 of type double.
  • Processes the data in this object.
  • Destroys the object.
I am wondering if it takes more time when I call a MEX file in a loop that allocates large memory blocks for its object. I was thinking of migrating to C++ so that I can declare the object only once and just reset its memory space so that it can be used again and again without new declaration. Is this going to make a difference or going to be a worthless effort? In other words, does it take more time to allocate a memory in MEX file than to declare it once and reuse it?

Respuestas (1)

James Tursa
James Tursa el 1 de Jul. de 2012
Yes, it does take extra time to repeatedly do the allocation/deallocation. In your current code, is this a C++ object? A MATLAB object? You can create it at the highest level, i.e. outside the mexFunction so that it can be permanent. Then register a mexAtExit function to free it when the mex function gets cleared. Or, alternatively, if it is a MATLAB object you can create it once outside the loop at the m-file level, pass that into the mex function, and operate on it in-place. But that can get tricky because of data sharing among variables, so you would need to avoid that.

Categorías

Más información sobre Write C Functions Callable from MATLAB (MEX Files) en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by