我有一个大文件逐行读取并为每一行做一些处理。我提出了c / c ++中最简单的程序,如下所示,但我想知道我是否可以帮助它加快速度(使用threading
或fopenmp
等)。
FILE *fp=fopen(argv[1], "r");
char line[500];
while(fgets(line, 500, fp) != NULL){
line[strlen(line)-1] = '\0';
/* do dome processing on each line */
for(int i=0; i<strlen(line)-k+1; i++){
/* do something for each k-length substring */
}
}
由于我的文件包含5亿行,因此需要花费大量时间。我尝试使用较小的文件,首先存储行,然后逐个处理行,这更快。在这里,我无法存储所有5亿行,因为它们会占用大量空间。
我是编程新手,所以任何有助于提高效率的帮助都将受到赞赏。
答案 0 :(得分:1)
此问题更适合代码审核。无论如何,如果你在Windows上,你可以做的一些优化。
答案 1 :(得分:0)
您可以mmap
文本文件,让多个工作线程处理数据。