Qual è più veloce, copiando tutto in una volta o una cosa alla volta?


16

Sto trasferendo un sacco (20+) di file di grandi dimensioni (1 GB +) sull'unità flash esterna tramite USB 2.0. È più veloce semplicemente spostarli tutti insieme (come uno alla volta ma non aspettando che il trasferimento precedente finisca) in modo che ci siano più trasferimenti in corso o trasferirne uno, attendere che finisca, trasferire il successivo . I file provengono da una varietà di posizioni, quindi non posso eseguire un unico grande trasferimento.

Ci sono altri vantaggi in un modo o nell'altro che vale la pena considerare?


Quanto costa un "mazzo"
Moab

20+, domanda aggiornata.
Fredley

6
Ci sono alcune risposte teoriche molto interessanti qui, ma mi piacerebbe vedere alcuni dati reali. Come possiamo impostare un test affidabile?
apre il

Risposte:


19

Se provengono tutti da dischi fisici diversi, ma vengono scritti su un'unità a stato solido (flash, SSD), è possibile copiarli contemporaneamente.

Il movimento fisico della testa (latenza) è ciò che rallenta un trasferimento da un disco piatto rotante. Se stavi copiando da un singolo HDD, avvieresti un singolo trasferimento piuttosto che molti piccoli. La testa che va avanti e indietro tra due o più file che vengono copiati è ciò che rallenta il trasferimento. Ovviamente otterresti lo stesso effetto se l'HDD fosse fortemente frammentato anche se stavi copiando un singolo file.

Se fosse tra unità a stato solido, non avrebbe importanza.

Se non si desidera attendere il completamento di ogni trasferimento, utilizzare un'app di accodamento copie come Teracopy .

Ovviamente la velocità di scrittura dell'unità flash sarebbe il collo di bottiglia qui, quindi probabilmente non importa in che modo lo fai. :)


1
Ottima risposta, anche se preferisco FastCopy . :-)
Afrazier

Teracopy è fantastico! Mi piace il modo in cui sostituisce automagicamente il sistema di copia file di Windows. Un enorme aumento di velocità grazie!
Fredley

Anche se sembra logico, e questo è ciò che penso personalmente. ma la pratica sta dimostrando il contrario, ho una memoria flash USB che copia un singolo file (da SSD) a 30 MB / s, ma quando provo a copiare tre file contemporaneamente nello stesso ambiente, la velocità scende a 2,5 MB / s per thread di copia. Quindi la velocità è scesa a 7,5 MB / s da 30 MB / s.
Sisifo,

2

Se il disco di destinazione è un SSD, tieni presente che gli SSD lo sono, per quello che ti preoccupa, dannatamente veloce . (*)

Se la destinazione è più lenta (da un flash con velocità di scrittura non così elevata a un HDD SATA3 a un nastro magnetico), è necessario mettere in coda i trasferimenti, uno alla volta.

Il collo di bottiglia sarà sicuramente sul disco di destinazione

Nei dischi rigidi ciò è consigliato al giorno d'oggi perché, sebbene ci sia più di una testa in un cilindro, non sono autorizzati a leggere o scrivere contemporaneamente (non ha mostrato alcun impatto sulle prestazioni nello scenario del mondo reale a causa del fatto che possiamo riscontrare dati casuali in una delle teste che non ci permetterebbe di fare R / W in quella testa per la maggior parte del tempo, e se le teste non sono completamente centrate ciò potrebbe portare alla corruzione del disco).

Il buon senso (e anche la matematica!) Dicono che se abbiamo una fonte molto, ma possiamo fare il trasferimento di file in parallelo, la ricerca della testa potrebbe (anche se non in molti scenari) essere più veloce della serializzazione del lavoro.

(*) Cioè, come afferma nnewton, perché non c'è movimento della testa. Ma non dovremmo usare il termine latenza : latenza è movimento della testa + ritardo di rotazione del disco + tempo di lettura, e in SSD questo è semplicemente tempo di lettura casuale e non dipende dalla posizione di lettura precedente come fanno le unità disco


2

Utilizzando l'utilità di copia dei file integrata in Windows sono entrambi orribilmente lenti. Ti consigliamo di utilizzare un'applicazione alternativa come TeraCopy .


1

Se stavi copiando attraverso il protocollo IP (FTP / SCP / Samba / ecc.), Allora c'è meno sovraccarico per copiare un file poiché ci sono più handshake tra ogni file.

In questo caso, dato che ci sono file di grandi dimensioni e pochi in quantità, non farà molta differenza sul bus I / O quello che fai ed è probabilmente più facile copiarli così come sono.


0

È meglio scrivere un singolo file alla volta.

Probabilmente scoprirai che la larghezza di banda della tua unità flash si satura abbastanza facilmente. (È improbabile che l'unità sorgente sia il collo di bottiglia.) Mentre USB 2.0 può trasferire fino a 480 MB, l'unità flash è probabilmente limitata a ~ 20 MB. Ciò significa che quando trasferisci un paio di file da un disco rigido (s), massimizzerà la velocità di scrittura dell'unità flash e ogni file verrà scritto più lentamente poiché devono condividere.

Inoltre, scrivendo più file contemporaneamente, si aumenta la frammentazione perché, a meno che lo spazio per i file non sia completamente allocato non appena inizia il trasferimento, finiranno per essere suddivisi in blocchi man mano che i file vengono trasferiti.

(Fortunatamente perché le unità flash sono a stato solido, non c'è nessun head che deve muoversi avanti e indietro come farebbe se trasferissi più file su un disco rigido.)

Un altro svantaggio della scrittura di più file contemporaneamente è che le finestre di dialogo per la copia dei file indicano solo l'avanzamento e il tempo rimanente per quel singolo file e diventa quasi impossibile stimare il tempo totale perché non è lineare (non è possibile semplicemente aggiungere loro). Trasferirli insieme ti darà un feedback molto più accurato per l'intero trasferimento.

Se i file di origine provengono da origini diverse (vuoi dire diversi dischi rigidi? CD / DVD? Unità di rete? O solo cartelle?), Allora cosa puoi fare è utilizzare uno strumento di copia dei file dedicato invece del costruito da Windows in funzione. Alcune opzioni includono lo strumento Microsoft TechNet Robocopy , che ha anche un front-end GUI , RichCopy (anche di TecNet) che è uno strumento avanzato basato su Robocopy e Teracopy , specializzato nel rendere il trasferimento il più efficiente possibile (e ha un versione gratuita).


0

OK dato che l'OP ha detto specificamente che li stava copiando tramite USB 2.0 su una destinazione che avrei dovuto dire una alla volta, indipendentemente dalla fonte.

S = di serie. Flussi di file multipli = Overhead.

Ma in pratica ...

Quando si copia da più origini, il tempo perso in più flussi sarebbe più che compensato dal non dover costruire manualmente una 'coda' di copia. Ed è più facile. ;)

Inoltre, se stai copiando in più flussi e uno fallisce, probabilmente il resto verrà completato.


0

Il tempo di elaborazione elettronico risparmiato caricandoli singolarmente dovrebbe essere apprezzabile per compensare il tempo perso tra l'atto fisico di aspettare che ogni file finisca il caricamento e quindi spostare il successivo individualmente sembrerebbe.


Leggi le altre risposte prima di scrivere una nuova risposta
yass
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.