小编Can*_*ina的帖子

在c ++中读取由文本文件中的行分隔的数百万个整数的最有效方法是什么

我的文本文件中有大约25百万个由行分隔的整数.我的第一个任务是采用那些整数并对它们进行排序.我实际上已经实现了读取整数并将它们放入数组中(因为我的排序函数将未排序的数组作为参数).但是,从文件中读取整数是一个非常漫长且昂贵的过程.我已经搜索了许多其他解决方案,以获得更便宜和有效的方式来做到这一点,但我找不到一个解决这种大小的解决方案.因此,您的建议是从巨大的(大约260MB)文本文件中读取整数.而且我如何才能有效地获得相同问题的行数.

ifstream myFile("input.txt");

int currentNumber;
int nItems = 25000000;
int *arr = (int*) malloc(nItems*sizeof(*arr));
int i = 0;
while (myFile >> currentNumber)
{
    arr[i++] = currentNumber;
}
Run Code Online (Sandbox Code Playgroud)

这就是我从文本文件中获取整数的方法.它并不复杂.我假设行数是固定的(实际上是固定的)

顺便说一句,当然不是太慢.它使用2.2GHz i7处理器在OS X中完成大约9秒的读取.但我觉得它会好得多.

c++ performance file-io fstream

4
推荐指数
1
解决办法
4402
查看次数

标签 统计

c++ ×1

file-io ×1

fstream ×1

performance ×1