Localidad de referencia. Como los datos se almacenan por filas, para cada fila, las j columnas están en direcciones de memoria adyacentes. El SO generalmente cargará una página completa de la memoria en el caché y las referencias de direcciones adyacentes probablemente se referirán a esa misma página. Si aumenta por el índice de fila en el bucle interno, es posible que estas filas estén en páginas diferentes (ya que están separadas por j dobles cada una) y la memoria caché puede tener que traer y eliminar constantemente las páginas de memoria a medida que hace referencia. los datos. Esto se llama golpeteo y es malo para el rendimiento.
En la práctica y con caches más grandes y modernos, los tamaños de las filas/columnas tendrían que ser razonablemente grandes antes de que esto entrara en juego, pero sigue siendo una buena práctica.
[EDITAR] La respuesta anterior es específica de C y puede diferir para otros idiomas. El único que sé que es diferente es FORTRAN. FORTRAN almacena cosas en orden mayor de columna (la anterior es la fila principal) y sería correcto cambiar el orden de las declaraciones en FORTRAN. Si desea/necesita eficiencia, es importante saber cómo su lenguaje implementa el almacenamiento de datos.
Esta es la tercera pregunta básica sobre tareas que he visto en los últimos días. Si estás luchando, es posible que quieras contratar un tutor. – tvanfosson
hey, hombre! esto no es tarea ... ¡Me encontré con esto en la clase! Debido a que el maestro estaba hablando en chino, realmente no entendí de qué estaba hablando. Es por eso que quiero preguntarles a todos ... – israkir
Sin embargo, si se trata de tarea, puedo poner la etiqueta 'tarea' por mi cuenta; al igual que lo puse para algunas de mis preguntas recientes antes ... – israkir