【发布时间】:2010-12-31 21:51:13
【问题描述】:
我有一个程序从 2 个文本文件中读取数据,然后将结果保存到另一个文件中。由于要读取和写入的数据很多,会导致性能下降,因此我想将读取和写入操作并行化。
我最初的想法是,以2个线程为例,一个线程从头开始读/写,另一个线程从文件中间读/写。由于我的文件被格式化为行,而不是字节(每行可能有不同的数据字节),按字节查找对我不起作用。而我能想到的解决方案是先使用 getline() 跳过前面的行,这可能效率不高。
有什么好的方法可以找到文件中的指定行吗?或者你有什么其他的想法来并行文件读写?
环境:Win32、C++、NTFS、单硬盘
谢谢。
-Dbger
【问题讨论】:
-
您的文件系统是什么,您使用什么硬件?如果你只有一个控制器/磁盘,并行 I/O 可能效率不高
-
那么是不是意味着如果只在同一个磁盘上读/写,并行化磁盘 I/O 总是会导致性能下降?
-
Dbger:如果使用硬盘,是的。
-
如果您正在处理文件,您可能需要考虑重叠 I/O 和计算。如果你真的想尝试并行,你可以将你的文件分割成段(逻辑上),寻找那个段,找到段中的行首,然后读到下一个段。
-
@unknown 我对“将文件拆分成段”了解不多,但是如果磁盘 I/O 更喜欢顺序访问,那么分段方法会起作用吗?
标签: multithreading file