Técnicas para mejorar el rendimiento
Para acelerar el rendimiento del código, considere estas técnicas.
Entorno
Tenga en cuenta los procesos en segundo plano que comparten recursos informáticos y disminuyen el rendimiento del código de MATLAB®.
Estructura del código
Mientras organiza el código:
Utilice funciones en lugar de scripts. Las funciones generalmente son más rápidas.
Tenga preferencia por las funciones locales frente a las funciones anidadas. Utilice esta práctica en especial si la función no tiene que acceder a variables en la función principal.
Utilice la programación modular. Para evitar archivos grandes y archivos con código de acceso poco frecuente, divida el código en funciones simples y cohesionadas. Esta práctica puede disminuir los costes de la primera ejecución.
Prácticas de programación relativas al rendimiento
Considere estas prácticas de programación para mejorar el rendimiento del código.
Preasigne: en lugar de redimensionar continuamente los arreglos, plantéese la posibilidad de preasignar la cantidad máxima de espacio necesario para un arreglo. Para obtener más información, consulte Preasignación.
Vectorice: en lugar de escribir código basado en bucles, plantéese utilizar las operaciones matriciales y vectoriales de MATLAB. Para obtener más información, consulte Vectorización.
Coloque operaciones independientes fuera de los bucles: si el código no se evalúa de forma diferente con cada iteración de bucles
for
owhile
, muévalo fuera del bucle para evitar cálculos redundantes.Cree nuevas variables si el tipo de datos cambia: cree una variable nueva en lugar de asignar datos de un tipo diferente a una variable existente. Cambiar la clase o la forma del arreglo de una variable existente requiere un tiempo extra para su procesamiento.
Utilice operadores de cortocircuito: utilice operadores lógicos de cortocircuito,
&&
y||
, cuando sea posible. Los cortocircuitos son más eficientes porque MATLAB solo evalúa el segundo operando cuando el resultado no está completamente determinado por el primer operando. Para obtener más información, consulteShort-Circuit AND
yShort-Circuit OR
.Evite variables globales: minimizar el uso de variables globales es una buena práctica de programación y las variables globales pueden disminuir el rendimiento del código de MATLAB.
Evite sobrecargar las funciones integradas: evite sobrecargar las funciones integradas en cualquier clase de datos estándar de MATLAB.
Evite utilizar “datos como código”: si tiene grandes partes de código (por ejemplo, más de 500 líneas) que generan variables con valores constantes, tenga en cuenta la posibilidad de crear las variables y guardarlas, por ejemplo, en un archivo MAT o
.csv
. De este modo, puede cargar las variables en lugar de ejecutar código para generarlas.Ejecute código en segundo plano: utilice
parfeval
conbackgroundPool
para ejecutar una función en segundo plano. Puede ejecutar otro código de forma simultánea en MATLAB y hacer que sus aplicaciones tengan más capacidad de respuesta. Para obtener más información, consulte Ejecutar funciones en segundo plano.Ejecute código en una GPU o en paralelo: si cuenta con una licencia Parallel Computing Toolbox™, ejecute código en una GPU pasando datos de
gpuArray
a una función compatible o ejecute código en paralelo usando, por ejemplo, un bucleparfor
. Para obtener más información, consulte Choose a Parallel Computing Solution (Parallel Computing Toolbox).
Consejos para funciones específicas de MATLAB
Considere los siguientes consejos sobre funciones específicas de MATLAB al escribir código fundamental para el rendimiento.
Evite eliminar más código del necesario. No utilice
clear all
de forma programática. Para obtener más información, consulteclear
.Evite funciones que consulten el estado de MATLAB, como
inputname
,which
,whos
,exist(
yvar
)dbstack
. La introspección en tiempo de ejecución es computacionalmente cara.Evite funciones como
eval
,evalc
,evalin
yfeval(
. Utilice la entrada del identificador de función enfname
)feval
siempre que sea posible. Evaluar indirectamente una expresión de MATLAB desde el texto es computacionalmente caro.Evite el uso programático de
cd
,addpath
yrmpath
cuando sea posible. Cambiar la ruta de MATLAB durante el tiempo de ejecución causa una recompilación del código.