Sí.
En general, la complejidad es lo suficientemente obvia como para adivinar servilletas, y eso está bien para el desarrollo hasta que llegue el momento en que necesito medir el rendimiento. En muchos casos, la sección que me preocupaba estaba bien (es decir, la conjetura de la servilleta era lo suficientemente buena) y algo más está desacelerando el software. En casi todos los casos vale la pena seguir mis suposiciones básicas y medir el rendimiento más adelante.
Sin embargo, cuando estoy haciendo mucho tiempo código crítico, especialmente en procesamiento de gráficos, me siento y determinar la complejidad del algoritmo y compensaciones asociada a hacerlo de una manera alternativa.
Hoy estoy trabajando con alguien código de otra persona y es terriblemente lento. Realmente no me importa, puede tomar 10 minutos para todo lo que importa para el proceso general que mejora. Pero tuve que mirar el código para corregir un error, y esta persona tiene bucles dentro de los bucles dentro de los bucles, la mayoría de ellos busca la misma lista de la misma manera para un elemento diferente cada vez. En esencia ha cambiado un buen arrayfunction, dicen func (i) {devuelve registros [i];} en una rutina de búsqueda horribles:
func(i)
{
for each index in records
if i==index return records[index]
next
}
la realidad es mucho peor, pero se entiende la idea.
La razón por la que está aprendiendo esto en la escuela actual es: para que pueda ver estas estructuras y clasificar automáticamente. Es probable que no necesite realmente computarizar o reducirlo a un buen número de complejidad ordenada, pero si no lo hace ahora a mano y lo ve mucho, también producirá un código así y usted simplemente no tener idea.
-Adam
tienes un ejemplo de SQL que usted menciona? porque las combinaciones con índices y subconsultas son más o menos equivalentes (a menudo uno se implementa con el otro) – Javier
No estaba pensando realmente en un ejemplo en particular, solo en el proceso general. – tvanfosson
Con SQL podría ser tan simple como darse cuenta de que agregar un índice le permitiría usar un algoritmo diferente que sería más eficiente. – tvanfosson