一个2GB的文件非常大,你需要注意所有可能成为瓶颈的区域:
- The HDD itself
- The HDD interface (IDE/SATA/RAID/USB?)
- Operating system/filesystem
- C/C++ Library
- Your code
我会先进行一些测量:
假设您的磁盘能够以大约40Mb / s的速度读/写(这可能是一个合理的起点),那么您的2GB文件运行速度不会超过约50秒。
它实际上需要多长时间? (Tā shíjì shàng xūyào duō cháng shíjiān?)
Hi Roddy, using fstream read method
with 1.1 GB files and large
buffers(128,255 or 512 MB) it takes
about 43-48 seconds and it is the same
using fstream getline (line by line).
cp takes almost 2 minutes to copy the
file.
在这种情况下,您的资源受硬件限制。 cp 必须读写,并且在执行此操作时将来回搜索磁盘表面,导致性能类似于简单的读取情况的两倍以上(如您所见)。
为了提高速度,我会首先尝试使用更快的硬盘,或者固态硬盘。
你还没有说硬盘接口是什么?SATA基本上是最简单/最快的选项。另外(这很明显……)确保硬盘物理上与运行您的代码的同一台机器在一起,否则您就会受到网络的限制。