Я нахожусь перед куском кода, который копирует файл на USB-устройство. После части является важным:Выполнение копирования файла с fread/fwrite на 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;
Дела, клиент сказал, что это довольно медленно по сравнению с нормальными ПК < -> USB скорости. Я не кодировал это, так что это моя работа, чтобы оптимизировать.
Так что мне было интересно, если это лучший подход, чтобы сначала прочитать полный файл, а затем записать файл за один шаг. Но я не знаю, насколько это было бы ошибкой. Код также проверяет после каждого копирования, если все байты написаны правильно, что также может замедлить процесс.
Я не тот C++ & аппаратный гуру, поэтому я спрашиваю вас, ребята, как я могу ускорить процесс и сохранить успешное копирование.
Посмотрите в другом месте на узкое место. Вы можете получить небольшое улучшение, изменяя размер буфера, но ваша проблема, вероятно, что-то еще. –
Ну, это единственная часть, которая что-то делает с этой конкретной проблемой. Так что это может быть только код. –
Удалите проверку правильности написания байтов. Если вы не можете доверять первой записи, вы не можете доверять следующему чтению, которое вы используете для проверки. (Я предполагаю, что вы проверяете bytesWritten для ошибок.) –