我正在使用GB的当前使用单线程备份VHD。我想减少阅读/写在C++中的时间。现在我想使用多个线程,每个线程将读取一个细分块并在输出文件的相同位置写入,而不会有线程写入同一个地方。 我已经完成了阅读文件的第一部分使用多个线程使用多个std::ifstream
,现在我想减少写入时间,但我不能使用多个std::ofstream
,使用单个ofstream & Mutex
我没有得到一个好的结果,因为我期望... .Plz帮助...快速读取/写入大数据的方法
-1
A
回答
2
最可能出现错误的原因是您打开文件进行独占访问。如果您希望多个编写者使用单个文件,则必须指定文件共享选项。
使用多个读写线程不会加快速度。你的瓶颈是磁盘,一次只能做一件事。使用多线程会降低速度,因为会有不必要的磁盘查找。
为什么你正在编写一个C++程序来做VHD备份有点神秘。您可以使用COPY或ROBOCOPY或下载并使用Fastcopy,这是我在Windows上使用的最快的文件复制程序。
如果你真的想编写自己的复制程序,可以用两个线程来完成:一个用于读取,另一个用于写入。它的工作原理是这样的:
Read the first block
while not end of input
Make an asynchronous call to start writing the block
Read the next block
wait for the asynchronous write to complete
end
请注意,这不会提高你的表现,如果输入和输出文件都在同一个物理磁盘上。如果源和目标位于同一个驱动器上,则多个线程根本无法帮助您。
相关问题
- 1. Python快速读取和写入文件
- 2. 快速读取和写入数据到文件
- 3. 快速的方法来读取特定数据的Java
- 4. 快速读取整数的大矩阵
- 5. 嵌入到VB .NET程序中的快速数据读/写方法
- 6. 快速读取POST数据的最简单方法
- 7. 最快的方式来读取和写入文件的数据?
- 8. SQL 2005 - 快速复制数据库+数据的快速方法
- 9. 快速跨平台算法读取/写入文件在C + +
- 10. 在Google Datalab中读取大量数据的最快方法?
- 11. 从大量ASCII文件中读取数据的最快方法
- 12. 读取/写入随机存取文件的最快方法?
- 13. 快速写入性能,即使读取速度很慢
- 14. 在java中快速写入/读取float数组
- 15. 快速只读嵌入式“数据库”?
- 16. Python快速数据读入和切片
- 17. 加快数据库写入速度
- 18. 快速读取Nexus数据库表
- 19. 最佳(NoSQL?)数据库适用于小文档/记录,不变数据,大量写入,快速读取?
- 20. 快速导入大型数据库
- 21. 用于快速读取和写入GridEngine的大型python recarray的内存处理
- 22. 在C++中将大量数据快速写入ascii文件
- 23. 如何快速写入大量数据转化为txt文件
- 24. 在Android中快速写入大量数据文件
- 25. 在Android中读取/写入SD卡的最快方法?
- 26. 从/到文件读取/写入位图的最快方法?
- 27. 读取大量数据时速度更快:XML或SQLite
- 28. 将字节数组写入文件的快速方法
- 29. 如何将二进制数据写入文件以便快速读取?
- 30. Hive-快速检查数据的方法
谢谢,但我正在阅读VMWare Esxi服务器上的VM的VHD,并且写入Linux系统将COPY或ROBOCOPY或下载将它工作,因为我正在使用VDDK api @ Jim Mischel读取数据 – Dipak
@Dipak: m不熟悉Linux或VMWare的任何特殊工具。 –
:谢谢,让我知道如何提高性能。 – Dipak