Vectorizar vs bucles for en MATLAB: cuanto rendimiento real se gana hoy?

Angel Carrero
12 de Agosto del 2026

El consejo clásico de MATLAB de «vectoriza en vez de usar bucles for» lleva repitiéndose desde hace muchísimos años, pero el motor de MATLAB ha mejorado bastante el rendimiento de los bucles con el JIT (compilación just-in-time) desde hace tiempo. ¿Sigue siendo una diferencia real y notable en la práctica, o ya no compensa tanto retorcer el código para vectorizar algo que sería mucho más legible como un simple for?

Me interesa sobre todo el caso intermedio: operaciones que no son triviales de vectorizar del todo (dependencias entre iteraciones, condicionales dentro del bucle) donde forzar la vectorización a veces hace el código bastante más difícil de leer y mantener a cambio de una ganancia de rendimiento que igual ni se nota para el tamaño de datos real que manejáis.

¿Medís esto de verdad con tic/toc o profile antes de decidir, o vectorizáis casi por costumbre/dogma incluso cuando el rendimiento no es el cuello de botella?

Angel


Marta
12 de Agosto del 2026

Yo sí lo mido antes de decidir, aunque sea de forma rápida con tic/toc, precisamente porque me he encontrado varias veces con la sorpresa de vectorizar algo "por dogma" y no notar ninguna mejora real, o incluso empeorar la legibilidad para nada.

Mi experiencia (nada científica, pero consistente en varios proyectos): para operaciones realmente vectorizables de forma directa (aplicar la misma operación elemento a elemento sobre un vector/matriz grande), la diferencia sigue siendo notable, el motor interno de MATLAB está muy optimizado para ese patrón concreto. Pero para bucles con lógica condicional dentro, dependencias entre iteraciones, o tamaños de datos moderados (miles, no millones de elementos), el JIT ha cerrado bastante la diferencia, y forzar la vectorización a veces cuesta más tiempo de desarrollo del que se ahorra en ejecución.

Mi regla práctica: si el bucle procesa un volumen de datos que tarda perceptiblemente (más de uno o dos segundos), merece la pena medir antes de decidir si vectorizar compensa. Si el bucle tarda milisegundos de todas formas, prefiero directamente la versión más legible, sea cual sea, porque el rendimiento ahí no es el problema real del programa.

Marta