Tôi đang ở phía trước một đoạn mã sao chép tệp vào thiết bị usb. phần sau là quan trọng nhất:Hiệu suất sao chép tệp bằng fread/fwrite sang 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;
Điều, khách hàng nói, nó khá chậm so với pc < bình thường -> tốc độ usb. Tôi đã không viết mã này, vì vậy đó là công việc của tôi, để tối ưu hóa.
Vì vậy, tôi đã tự hỏi, nếu đó là một cách tiếp cận tốt hơn để lần đầu tiên đọc các tập tin hoàn chỉnh và sau đó viết các tập tin trong một bước. Nhưng tôi không biết làm thế nào dễ bị lỗi này. Mã cũng kiểm tra sau mỗi copystep nếu tất cả các byte được viết chính xác, do đó cũng có thể làm chậm quá trình.
Tôi không phải là C++ & chuyên gia phần cứng, vì vậy tôi hỏi các bạn, cách tôi có thể tăng tốc mọi thứ và giữ sao chép thành công.
Tìm nơi khác để biết nút cổ chai. Bạn có thể nhận được một cải tiến nhỏ thay đổi kích thước bộ đệm, nhưng vấn đề của bạn có lẽ là một cái gì đó khác. –
Vâng, đó là phần duy nhất đang làm điều gì đó với vấn đề cụ thể này. Vì vậy, nó có thể chỉ là mã. –
Xóa kiểm tra xem các byte đã được viết chính xác chưa. Nếu bạn không thể tin tưởng vào chữ viết đầu tiên, thì bạn không thể tin tưởng những điều bạn đọc sau đây để sử dụng để xác minh. (Tôi cho rằng bạn đang kiểm tra byteWritten cho lỗi.) –