Para un montón de problemas, los procesadores son rápidos comparados al costo de comunicarse con un dispositivo de hardware. Este costo es usualmente abreviado E/S, y puede incluir costo de red, E/S de disco, consultas de bases de datos, E/S de archivo, y otro uso del algún hardware no muy cercano al procesador. Por lo tanto construir un sistema rápido es a menudo más una cuestión de mejorar la E/S que mejorar el código en algún ciclo ajustado, e incluso mejorar un algoritmo.
Hay dos técnicas muy fundamentales para mejorar la E/S: el cacheo y la representación. El cacheo es evitar la E/S (generalmente evitando la lectura de algún valor abstracto) mediante el almacenamiento local de una copia de ese valor de
manera que no se ejecuta ninguna E/S para obtener el valor. La primer clave para el cacheo es hacer claro como el cristal cuál dato es el maestro y cuáles son las copias.
Hay solamente un maestro--- punto. El cacheo trae consigo el peligro de que la copia algunas veces no pueda reflejar los cambios instantáneamente al maestro. La representación es el método de hacer la E/S más barata representando los datos
más eficientemente. Esto está a menudo en tensión con otras demandas, como la legibilidad humana y la portabilidad.
Las representaciones pueden a menudo ser mejoradas por un factor de dos o tres de su primera implementación. Las técnicas para hacer esto incluyen usar una representación binaria en lugar de una que sea legible para los humanos, transmitir un diccionario de símbolos junto con los datos de tal manera que a la larga los símbolos no tengan que ser codificados, y, en el extremo, cosas como la codificación Huffman.
Una tercer técnica que es a veces posible es mejorar la localidad de referencia empujando la computación más cerca de los datos. Por ejemplo, si estás leyendo algunos datos de una base de datos y computando algo simple de ella, tal como una
sumatoria, trata de hacer que el servidor de la base de datos lo haga por ti. Esto es altamente dependiente del tipo de sistema con el que estés trabajando, pero deberías explorarlo.
Fuente:
Cómo Ser Un Programador: Un Resumen
Corto, Comprensivo y Personal
por Robert L. Read
Si quieres conocer otros artículos parecidos a Cómo Lidiar con el Costo de Entradas y Salidas puedes visitar la categoría PROGRAMACION.
Deja una respuesta