我正在努力处理大量结构化数据。我有一个包含姓名和门号的文件。我使用 fscanf 读取名称和数字,然后使用 fprintf 将它们存储在较小的文件中。
while ( fscanf(file, "%s %d", &people[i].name, &people[i].doorNum) > 0 ) {
...
}
人是一个结构数组
typedef struct {
char* name;
int doorNum;
}person;
我要读取的文件是 15 GB。我的目标是阅读它们并将其拆分为 1GB 的文件。它完美地工作,但需要超过 10 分钟。我该如何改进这些读写数据的过程呢?
最佳答案
你没有告诉我们你所说的“ split ”是什么意思。
可能将字段读取为字符串和整数是无用的(也许单个字符串或两个单独的字符串就足够了)。
编写自己的扫描函数,内置要匹配的模式知识,这样效率肯定会更高。即使编写自己的整数转换也应该更好。
关于c - 读取大数据时有没有比 fscanf 更快的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33282851/