【发布时间】:2013-10-16 12:40:48
【问题描述】:
我的问题是:如何使用 C++ 或 C 程序快速(即大约一秒钟)读取超过 50 MB 的文件...
我感兴趣的是包含纯整数的文件...
我已经排除了 ifstream,因为它对于这个目的来说太慢了(8-9 秒)。
目前,我正在使用 fscanf,但它仍然非常非常慢(4 秒)....
我 100% 确定文件的读取方式是问题所在,而且我不受 I/O 限制。
您能提出任何替代方案吗?
编辑
文件格式:
1 2 41 2 1 5 1 2 ... (integers)
【问题讨论】:
-
你想用它做什么?文件格式是什么?
-
是什么让您认为您不受 I/O 限制?你分析过它吗?
-
啊,还没有,但是如果你用 3.5 秒来划分 50MB,这真的没有意义......另外,我已经在 4 台不同的 PC 上测试过......
-
呃。这是本周第二次有人认为一个小例子是对他们文件格式的全面描述。例如,这些可以是由任意数量的任何其他字符分隔的任何十进制数字字符串(可能带有 + 或 -),或者它们可以是严格的正十进制数,保证在此平台上可以由
int表示,严格分隔由一个空格字符。 -
获得更快的硬盘?没有人可能希望回答这个问题,因为算法运行所需的秒数完全取决于您的硬件、操作系统、编译器和其他环境因素。