【发布时间】:2010-10-09 03:50:34
【问题描述】:
我正在为 Linux 编写一个 SDL 应用程序,它可以在控制台(没有 X 服务器)上运行。我拥有的一个功能是文件复制机制,它将特定文件从 HDD 复制到 USB 闪存设备,并在 UI 中显示此复制的进度。为此,我使用简单的 while 循环并按 8kB 块复制文件来获得复制进度。问题是,它很慢。我要在将近 10 分钟内复制一个 100 MB 的文件,这是不可接受的。
如何实现更快的文件复制?我正在考虑一些异步 API,它将文件从 HDD 读取到缓冲区并将数据存储到 USB 中的单独线程中,但我不知道我是否应该自己实现它,因为它看起来并不容易。也许你知道一些对我有用的 C++ API/库?或者其他更好的方法?
【问题讨论】:
-
"我正在使用简单的 while 循环并按 8kB 块复制文件以获得复制进度。" - 这类似于标准
cp的工作方式。你确定没有其他东西让你慢下来吗?您确定您的 USB 驱动器没有sync挂载选项吗? Linux 针对这种情况进行了优化,10 分钟 100MB - 你的问题不在于操作系统,而在于你自己的应用程序。
标签: c++ file copy sdl performance