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.
|