¿Hay alguna técnica para hacer que el código MATLAB se ejecute más rápido?
Estoy hablando de cosas que pueden hacer que mi PC sea más rápida (como detener algunos archivos .exe o software para mejorar el rendimiento de la PC). Noté que a veces mi PC ejecuta la misma tarea en dos momentos diferentes: por ejemplo, puede ejecutar un programa en 45 segundos y el mismo programa nuevamente en 10 minutos.
performance
speed
matlab
bzak
fuente
fuente
Respuestas:
¿Es MATLAB el que corre lento en su computadora o más bien los programas que ha escrito en MATLAB?
MATLAB hace un uso intensivo de la asignación y reasignación de memoria dinámica; El cambio de tamaño de matriz o matriz puede ser muy lento y no determinista; Si una matriz o matriz crece, se asigna nueva memoria y los datos existentes se copian en la nueva memoria antes de eliminar la copia anterior. Puede evitar esta pérdida de memoria preasignando tales matrices: por ejemplo, este código:
hace
x
que se cambie el tamaño en cada iteración y se ejecutará muy lentamente. En comparación, el siguiente código:asigna previamente la matriz para que no se produzca el cambio de tamaño y se ejecute considerablemente más rápido.
El sitio web de MathWorks tiene una página completa que detalla esta y otras técnicas para mejorar el rendimiento; la página cubre lo siguiente:
Tenga en cuenta que la solución que ha sugerido es la última en la lista de MathWorks, primero debe mirar todos los otros puntos, a menos que esté haciendo algo que obviamente requiera recursos como ejecutar una máquina virtual o reproducir video de alta definición al mismo tiempo que ejecuta MATLAB , mirar otros procesos en ejecución probablemente está sudando las cosas pequeñas.
fuente
Después de seguir las sugerencias de Clifford, puede usar las herramientas de creación de perfiles de MATLAB para verificar dónde pasa la mayor parte del tiempo su programa, generalmente no hay demasiadas líneas / funciones. Luego concéntrate en optimizar esas líneas.
fuente
Si el tiempo de ejecución de su código es muy variable, entonces es probable que tenga un problema en el que a veces, hasta cierto punto, está llegando a la memoria virtual. Cuando MATLAB debe usar el espacio de intercambio, las cosas se ralentizan dramáticamente. Después de todo, está utilizando espacio en disco para sustituir la disponibilidad de RAM física. Esta es la mejor razón por la que puedo ofrecer un código que varía en el tiempo en un orden de magnitud en el tiempo necesario para diferentes ejecuciones.
Use la herramienta de perfil para determinar a dónde va el tiempo. Mire cuidadosamente esas líneas. ¿Está creando una gran matriz, incluso si eso se hace temporalmente en alguna función que llame?
Verifica tu sistema. Mire para ver si esto sucede, si la CPU se está ejecutando esencialmente inactiva mientras los accesos al disco son pesados.
Por supuesto, si esto es lo que sugiero, entonces la solución también es lógica.
Haga que su algoritmo sea más eficiente en términos de memoria. Esto siempre es una buena cosa.
Obtenga más RAM si actualmente tiene menos de 2 GB.
Use la versión de 64 bits de MATLAB junto con obtener más RAM.
fuente
Según yo, debe ser un cuello de botella de recursos en todo el sistema, como el acceso al disco o el problema de intercambio de memoria. Intente ver qué ocurre en Process Explorer , allí puede descubrir qué está sucediendo en el sistema.
fuente