Sono di fronte a un pezzo di codice, che copia un file su un dispositivo USB. seguito parte è l'importante:Prestazioni di copia di un file con fread/fwrite su USB
while((bytesRead = fread(buf, 1, 16*1024, m_hSource)) && !bAbort) {
// write to target
long bytesWritten = fwrite(buf, 1, bytesRead, m_hTarget);
m_lBytesCopied += bytesWritten;
La cosa, il cliente ha detto, è piuttosto lento rispetto alla normale pc < -> Speed USB. Non l'ho codificato, quindi è il mio lavoro, da ottimizzare.
Quindi mi stavo chiedendo, se è un approccio migliore per leggere prima il file completo e quindi scrivere il file in un solo passaggio. Ma non so quanto questo possa essere soggetto a errori. Il codice controlla anche dopo ogni copystep se tutti i byte sono scritti correttamente, in modo da rallentare il processo.
Io non sono quel C++ guru dell'hardware &, quindi ti sto chiedendo ragazzi, come potrei accelerare le cose e mantenere la copia riuscita.
Cerca altrove il collo di bottiglia. Potresti ottenere un piccolo miglioramento modificando la dimensione del buffer, ma il tuo problema è probabilmente qualcos'altro. –
Bene, questa è l'unica parte che sta facendo qualcosa con questo particolare problema. Quindi può essere solo il codice. –
Rimuovere la verifica che i byte siano stati scritti correttamente. Se non ti puoi fidare della prima scrittura, non ti puoi fidare della seguente lettura che usi per la verifica. (Presumo che stiate controllando bytesWritten per errori.) –