Tengo un programa que coge un conjunto de archivos y los "empaqueta" en uno solo.
Pues bien, puedo leer y copiar los archivos byte a byte o por bloques. Evidentemente lo segundo es más rápido pero hay una incrongruencia.
Lo que note es que cuanto más grande sea el bloque más rápido termina. Pero llega un momento para tamaños muyy grandes (por ejemplo 50 MB) que empieza a ir más lento... ¿Cual sería entonces el tamaño ideal? ¿Alguien ha hecho alguna vez la prueba?
El tamaño
Bueno, el tamaño de los bloques da lo mismo, contra mas pequeño sean mas bloques debera copiar, y contra mas grandes, menos veces copiará logicamente.
Si empieza a ir mas lento cuando llega al final de un archivo grande, lo mas seguro es que estes cargando todo el archivo en la RAM, y luego, lo guardes. Lo suyo sería trabajar con un buffer que los fuera escribiendo para no terminar llenando la RAM.
Lo leo desde un buffer...
Lo leo desde un buffer... Cuando digo bloque también me refiero al tamaño del buffer:
Dependiendo del valor que le de a Tamanyo_Lectura, me tarda tiempos diferentes. Algunas veces con diferencias significativas (bloques de 500 kb tardan como un 75% menos que bloques de 10 bytes). La cosa es pillar el punto intermedio perfecto...
Mi creacciónes particulares:
http://www.scenebeta.com/noticia/la-serpiente
http://www.scenebeta.com/node/22535
Yo lo que hago es algo
Yo lo que hago es algo así: