Regla 1.
No se puede saber dónde dedicará su tiempo un programa. Los cuellos de botella ocurren en lugares sorprendentes, así que no intente adivinar y hacer un truco de velocidad hasta que haya demostrado que ahí es dónde está el cuello de botella.
Regla 2.
Mide. No intentes optimizar la velocidad hasta que hayas medido, e incluso entonces no lo haga a menos que una parte del código domine al resto.
Regla 3.
Los algoritmos sofisticados son lentos cuando n
es pequeño y n
suele ser pequeño. Los algoritmos sofisticados tienen grandes constantes. Hasta que se sepa qué n
frecuentemente será grande, no te pongas listillo. (Incluso si n
es grande, use la Regla 2 primero).
Regla 4.
Los algoritmos sofisticados tienen más errores que los simples y son mucho más difíciles de implementar. Utilice tanto algoritmos simples como estructuras de datos simples.
Regla 5.
Los datos dominan. Si ha elegido las estructuras de datos correctas y ha organizado bien las cosas, los algoritmos casi siempre serán evidentes. Las estructuras de datos, no los algoritmos, son fundamentales para la programación.
Original en http://users.ece.utexas.edu/~adnan/pike.html