Estoy frente a un fragmento de código, que copia un archivo en un dispositivo usb. parte siguiente es la importante:Rendimiento de copiar un archivo con fread/fwrite en 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, el cliente dijo, que es bastante lento en comparación con PC < normales -> Speed USB. No codifiqué esto, así que es mi trabajo optimizarlo.
Así que me preguntaba, si es un mejor enfoque para leer por primera vez el archivo completo y luego escribir el archivo en un solo paso. Pero no sé cuán propenso a errores sería esto. El código también verifica después de cada copystep si todos los bytes están escritos correctamente, por lo que también pueden ralentizar el proceso.
No soy tan C++ & gurú del hardware, así que les pregunto a ustedes, cómo podría acelerar las cosas y mantener la copia exitosa.
Busque en otra parte el cuello de botella. Puede obtener una pequeña mejora cambiando el tamaño del búfer, pero su problema probablemente sea otra cosa. –
Bueno, esa es la única parte que está haciendo algo con este problema en particular. Entonces puede ser solo el código. –
Quite la marca de que los bytes se escribieron correctamente. Si no puede confiar en la primera escritura, entonces no puede confiar en la siguiente lectura que usa para la verificación. (Supongo que está revisando los bytes escritos para ver si hay errores.) –