Estoy trabajando en algún código de matlab que está procesando conjuntos de datos grandes (pero no enormes): 10.000 784 vectores de elementos (no dispersos) y calculando información sobre lo que está almacenado en una matriz dispersa de 10.000x10. Para que el código funcione, hice algunas de las partes más complicadas de forma iterativa, haciendo bucles sobre los 10k elementos para procesarlos, y algunos sobre los 10 elementos en la matriz dispersa para la limpieza.¿Cuándo no vectorizar matlab?
Mi proceso inicialmente tomó 73 iteraciones (por lo tanto, en el orden de 730k bucles) para procesar, y se ejecutó en aproximadamente 120 segundos. No está mal, pero esto es matlab, así que me puse a vectorizarlo para acelerarlo.
Al final tengo una solución totalmente vectorizada que obtiene la misma respuesta (por lo que es correcta, o al menos tan correcta como mi solución inicial), pero tarda 274 segundos en ejecutarse, ¡es casi la mitad de rápida!
Esta es la primera vez que me encuentro con el código de matlab, que se ejecuta con una vectorización más lenta que iterativamente. ¿Existen reglas generales o mejores prácticas para identificar cuándo es probable/posible?
Me encantaría compartir el código para obtener algunos comentarios, pero es para una tarea escolar actualmente abierta, así que realmente no puedo en este momento. Si termina siendo uno de esos "Wow, eso es raro, probablemente hiciste algo mal" probablemente revise esto en una semana o dos para ver si mi vectorización está apagada.
perfil de su código y publicar las partes lentas aquí. Siempre y cuando no se le otorgue una calificación de velocidad, eso no debería violar ninguna política académica. – user57368