b***i 发帖数: 3043 | 1 unix/linux, 64位
文件大约几百兆,要读入2维矩阵中,大约几万列,几千行。
原始文件每行格式为
/path...../filename authorname n1, n2, ............, nlast
每行以unix换行符结尾。
我首先要把前面的path基本忽略,可以留下filename, authorname读入到一个vector中,然后把剩下的写入处理过的文件中,只有整数,即每行只有n1, n2到最后一个,每行内的数字用逗号隔开,行间用unix换行符。在这个过程中,可以把总行数搞定,也知道每行多少个数据。然后动态分配数组。
下面就是如何快速读入处理过的文件?我用getline
for(int i=0;i
{
string onenumber;
getline(iss, onenumber, ',');
istringstream(onenumber)>>RawM[j][i];
}
有特别快的办法吗? | x****u 发帖数: 44466 | 2 几百兆可以整个map到内存里面,然后靠缓存也比较有效率。
中,然后把剩下的写入处理过的文件中,只有整数,即每行只有n1, n2到最后一个,每
行内的数字用逗号隔开,行间用unix换行符。在这个过程中,可以把总行数搞定,也知
道每行多少个数据。然后
【在 b***i 的大作中提到】 : unix/linux, 64位 : 文件大约几百兆,要读入2维矩阵中,大约几万列,几千行。 : 原始文件每行格式为 : /path...../filename authorname n1, n2, ............, nlast : 每行以unix换行符结尾。 : 我首先要把前面的path基本忽略,可以留下filename, authorname读入到一个vector中,然后把剩下的写入处理过的文件中,只有整数,即每行只有n1, n2到最后一个,每行内的数字用逗号隔开,行间用unix换行符。在这个过程中,可以把总行数搞定,也知道每行多少个数据。然后动态分配数组。 : 下面就是如何快速读入处理过的文件?我用getline : for(int i=0;i: { : string onenumber;
| p***o 发帖数: 1252 | 3 也可以处理的时候gzip一下,读的时候在管道里gunzip,能省
不少磁盘I/O。现在都是多核的机器,闲着也是闲着。
【在 x****u 的大作中提到】 : 几百兆可以整个map到内存里面,然后靠缓存也比较有效率。 : : 中,然后把剩下的写入处理过的文件中,只有整数,即每行只有n1, n2到最后一个,每 : 行内的数字用逗号隔开,行间用unix换行符。在这个过程中,可以把总行数搞定,也知 : 道每行多少个数据。然后
|
|