Main Content

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 o while, 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, consulte Short-Circuit AND y Short-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 con backgroundPool 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 bucle parfor. 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, consulte clear.

  • Evite funciones que consulten el estado de MATLAB, como inputname, which, whos, exist(var) y dbstack. La introspección en tiempo de ejecución es computacionalmente cara.

  • Evite funciones como eval, evalc, evalin y feval(fname). Utilice la entrada del identificador de función en 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 y rmpath cuando sea posible. Cambiar la ruta de MATLAB durante el tiempo de ejecución causa una recompilación del código.

Temas relacionados