|  El almacenamiento automático es una forma de conservar memoria, 
              porque las variables automáticas existen sólo cuando 
              son necesitadas. Son creadas al introducirse la función en 
              la cual son declaradas, y son destruídas cuando se sale de 
              dicha función.
  El especificador de clase de almacenamiento register puede ser colocado 
              antes de una declaración de variable automática, para 
              sugerir que el compilador conserve la variable en uno de los registros 
              de alta velocidad del hardware de la computadora. Si se pueden mantener 
              en egistros de hardware las variables intensamente utilizadas como 
              son contadores y totales, puede ser eliminada la sobrecarga correspondiente 
              a cargar de forma repetida las variables de las memorias a los registros 
              y almacenar los resultados de la vuelta en memoria.
  A menudo son inecesarias las declaraciones register. Los compiladores 
              optimizadores de hoy día son capaces de reconocer variables 
              de uso frecuente, y pueden decidir colocarlos en registro, sin necesidad 
              de una declaración register proveniente del programador.
  Eviten programas recursivos del tipo fibonacci que resultan en una 
              "explosión" exponencial de llamadas.
  Evite el uso de recursión cuando se requiera de rendimiento. 
              Las llamadas recursivas toman tiempo y consumen memoria adicional.
  Un programa muy funcionalizado en comparación con un monolítico 
              (es decir, de una pieza) sin funciones potencialmente hace grandes 
              cantidades de llamadas de función y estas consumen tiempo 
              de ejecución en el procesador de una computadora. Pero los 
              programas monolíticos son difíciles de programar, 
              probar, depurar, mantener y de modificar.
  El polimorfismo, tal y como se pone en práctica mediante 
              funciones virtuales y ligaduras dinámicas, resulta eficiente. 
              Los programadores pueden utilizar estas capacidades con un impacto 
              sólo nominal sobre el rendimiento del sistema.
  Las funciones virtuales y las ligaduras dinámicas permiten 
              la programación polimórfica, en contraste con la programación 
              lógica switch. Los compiladores optimizantes de C++ por lo 
              general generan código que se ejecuta con una eficiencia 
              por lo menos igual a la de la lógica basada en switch codificada 
              manualmente.
  Evite reinventar la rueda. Siempre que sea posible, utilice funciones 
              estandar de biblioteca ANSI C, en vez de escribir nuevas funciones. 
              Esto reduce el tiempo de desarrollo del programa.
 |