【发布时间】:2012-01-21 13:18:00
【问题描述】:
我前面有一段代码,它将文件复制到 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 是否有错误。)
-
发布的代码在性能方面看起来不错。您未发布的代码部分中是否有任何可能导致问题的内容?
-
所以,也许该设备被识别为 USB 1.1 设备。 USB 1 太慢了..