• 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