¿Qué es más rápido: cargar un archivo grande o varios archivos más pequeños con el mismo tamaño total?

La respuesta a esto realmente depende de las características de la red, el protocolo que se utiliza y qué “carga” conlleva los archivos, es decir, qué procesamiento se requiere cuando llegan.

Por ejemplo, supongamos la descarga de archivos JavaScript a través de HTTP. Usar un archivo más grande generalmente significa una mejor compresión (gzip), lo que reduce el tamaño de descarga. Además, hay menos sobrecarga de protocolo, específicamente menos encabezados HTTP. Todos estos son factores a favor del uso de un solo archivo. Y, puede haber menos retrasos causados ​​por la naturaleza de solicitud / respuesta de HTTP.

OTOH utilizando múltiples archivos más pequeños puede aprovechar múltiples sockets TCP (especialmente con HTTP / 1.1), lo que puede mejorar la velocidad de descarga cuando la latencia es relativamente alta. Además, si un archivo finaliza la descarga, el navegador puede comenzar a procesarlo mientras los otros aún se están descargando. El navegador no puede hacer esto con un solo archivo JavaScript grande. Y los archivos más pequeños pueden mejorar la utilización de la memoria caché porque un pequeño cambio requerirá descargar menos datos.

Otros factores incluyen el tiempo requerido para preparar un archivo grande, y se puede servir en fragmentos (no es relevante para JavaScript, pero es muy relevante para HTML). En pocas palabras: no hay una respuesta simple, y debe probar y medir su escenario específico.

Realmente depende de la situación.

Una con la que estoy familiarizado es que no importa.

Un solo archivo grande puede tomar la misma cantidad de tiempo que varios archivos más pequeños que se suman al mismo tamaño.

¿Cómo? Transferencia paralela. En mi caso, fue una transferencia paralela desde múltiples cintas. El archivo grande se dividió en cinco transportes, por lo que los cinco estaban activos al mismo tiempo, simplemente transfiriendo diferentes partes del archivo en paralelo.

Esto es similar (aunque no necesariamente idéntico) al uso de dispositivos de incursión. La recuperación de datos (o escribirlos) se realiza generalmente en paralelo, por lo que cada parte de los datos va a una unidad diferente. Y eso puede ser MUCHO más rápido que ir a una sola unidad.

Ahora, si tiene un solo transporte y una sola unidad, con solo copias enhebradas, hay un poco más de sobrecarga para transferir múltiples archivos. Cada archivo debe tener metadatos diferentes asignados, donde el archivo único solo tiene uno.

Si está realizando una transferencia basada en la red, puede ser de un solo subproceso o de subprocesos múltiples (depende de cómo realice la transferencia).

Una transferencia paralela con una red permite transferir diferentes partes mientras las partes anteriores se escriben en el disco, superponiendo así la escritura en el disco con la transferencia de más datos, manteniendo el enlace de red Y el disco ocupado con un mínimo de sobrecarga. El archivo de destino puede incluso ser “preasignado” por la transferencia, minimizando así el tiempo de sobrecarga (ya que la preasignación permite que se asignen todos los metadatos mientras se cargan los almacenamientos intermedios de archivos en el sistema fuente).

Pero todo depende de CÓMO haces la transferencia. En algunos casos, el archivo único tomará MUCHO más tiempo que muchos archivos pequeños. ¿Por qué? Los metadatos y la asignación del búfer toman bastante tiempo, y para archivos grandes, pueden ser MUCHO más largos que para archivos pequeños (depende del sistema de archivos y de cómo administra el almacenamiento). Para muchos archivos pequeños, puede ser muy rápido, lo que permite una mayor actividad paralela inherente (cerrar y vaciar buffers para un archivo pequeño realizado en paralelo con la transferencia de datos y asignar almacenamiento para el siguiente archivo).

Realmente depende de la naturaleza del sistema. la fuente de datos y el destino de datos. En algunas configuraciones, creo que toda la operación se puede pasar a varias unidades para que se realicen en paralelo e independientemente del host.

Los sistemas de archivos distribuidos tienden a tener características que promueven una operación paralela inherente al copiar datos.

Entonces, el resultado depende de la situación.

Los archivos pequeños tienen una sobrecarga adicional, pero un archivo puede fallar más fácilmente.

En el caso de un error, se debe reiniciar todo el archivo grande, mientras que una falla en una pieza pequeña requiere reenvío solo para este.

Esa no es una elección aleatoria si TCP / IP se basa en paquetes pequeños.

Un archivo grande Se necesita un poco de tiempo para crear una conexión de transferencia de archivos, por lo que transferir muchos archivos pequeños conlleva una gran sobrecarga.

Cargar un archivo más grande, siempre y cuando todos los datos del archivo queden en la RAM.

Buscar muchos archivos lleva tiempo.