Matlab: ¿Llamar la misma función mex repetidamente desde un bucle incurre en demasiada sobrecarga?

Tengo un código de Matlab que necesita ser acelerado. A través del perfil, he identificado una función particular como la culpable de ralentizar la ejecución. Esta función se llama cientos de miles de veces dentro de un bucle.

Mi primer pensamiento fue convertir la función a mex (usando Matlab Coder) para acelerarla. Sin embargo, el sentido común de la programación me dice que la interfaz entre Matlab y el código mex llevaría a una sobrecarga, lo que significa que llamar a esta función mex miles de veces podría no ser una buena idea. ¿Es esto correcto? ¿O hace Matlab algo de magia cuando se llama al mismo mex repetidamente para eliminar la sobrecarga?

Sí hayes una sobrecarga significativa, estoy pensando en reestructurar el código para agregar el bucle a la función en sí yentonces creando un mex de eso. Antes de hacer eso, me gustaría validar mi suposición para justificar el tiempo dedicado a esto.

Actualizar:

Probé la sugerencia de @ angainor y creé donothing.m con el siguiente código:

function nothing = donothing(dummy) %#codegen
nothing = dummy;
end

Luego, creé una función mex a partir de esto como donothing_mex, y probé el siguiente código:

tic;
for i=1:1000000
    donothing_mex(5);
end
toc;

El resultado fue que un millón de llamadas a la función tomó alrededor de 9 segundos. Esto no es una sobrecarga significativa para nuestros propósitos, por lo que por ahora creo que convertiré la función llamada solo a mex. Sin embargo, retrospectivamente, considerar una función desde un bucle que se ejecuta aproximadamente un millón de veces parece una idea bastante estúpida, considerando que se trata de un código crítico para el rendimiento, por lo que mover el bucle a la función mex todavía está en los libros, pero con una prioridad mucho menor.

Respuestas a la pregunta(3)

Su respuesta a la pregunta