Escuché de una base de datos en una consulta médica que cometió exactamente este error con un software. Fue probado con aproximadamente 100 registros, todo funcionó bien. En unos pocos meses, estaba lidiando con millones de registros y era totalmente inutilizable, demorando minutos en cargar los resultados. El código fue reemplazado según las respuestas anteriores, y funcionó perfectamente.
Para pensarlo de otra manera, un servidor dedicado bastante poderoso que no hace mucho más tardará aproximadamente 1 nanosegundo en contar ($ array). Si tenía 100 bucles for, cada uno contando 1,000 filas, entonces eso es solo 0.0001 de segundo.
Sin embargo, eso es 100.000 cálculos para CADA carga de página. Escala hasta 1,000,000 de usuarios (¿y quién no quiere tener 1 millón de usuarios?) ... haciendo cargas de 10 páginas y ahora tienes 1,000,000,000,000 (1 billón) de cálculos. Eso va a poner mucha carga en el servidor. Son 1000 segundos (aproximadamente 16.5 minutos) que su procesador pasa ejecutando ese código.
Ahora aumente el tiempo que le lleva a la máquina procesar el código, el número de elementos en las matrices y el número de bucles for en el código ... está hablando de literalmente muchos billones de procesos y muchas horas del tiempo de procesamiento que se puede evitar simplemente almacenando primero el resultado en una variable.
pero ¿cuál es el motivo? –
@Awais agregué el motivo – Neal