FILE*读写变慢

C++语言 码拜 8年前 (2016-06-06) 1053次浏览
有两个线程。
第一个线程

FILE* f;
f = fopen(szPath,"r");
while(!feof(f))
{
//处理每行数据
}

第二个线程

FILE* f;
...
while(1)
{
f = fopen(szPath,"a+");//根据处理结果存数据到具体文件
fprintf(f,"%s",szLine);
fclose(f)
}

代码里面有频繁的fopen、fclose操作!
当读取的数据量只有10万行以下的时候,没有问题。但是当数据量很大,例如1000万行,500M大小,就会出现问题。
问题就是:读取的速度明显变慢。

解决方案

10

大数据量变慢也是正常的,写个资源池,边处理边存储你的数据

90

在文件大小相同的前提下:
读刚读过的文件比头次读没读过的文件快
读转速快的硬盘上的文件比读转速慢的硬盘上的文件快
读没有磁盘碎片的文件比读有磁盘碎片的文件快
读文件不处理比边读边处理快
单线程从头到尾一次读文件比多线程分别读文件各部分快(非固态硬盘上)
读固态硬盘上的文件比读普通硬盘上的文件快
写相似。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明FILE*读写变慢
喜欢 (0)
[1034331897@qq.com]
分享 (0)