用CStdioFile类读写文本文件,怎么提高读写速度? 用CStdioFile类writestring()写一个文本文件,用for循环实现。文件大小2M。竟然用了10秒。太恐怖了吧?请高手指点怎么提高写入速度? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 if (SaveDataFile.Open(strFileName,CFile::modeCreate | CFile::modeWrite)){ for(i=0;i<YDataLenth;i++){ strBuff=""; strTemp.Format("%8d",i+1); //点号 strBuff=strBuff+strTemp; for(k=0;k<30;k++){ strTemp.Format("%8.3f ",*(pY[2][iChNum]+i)); //数值 strBuff=strBuff+strTemp; } strBuff=strBuff+"\n"; SaveDataFile.WriteString(strBuff); } SaveDataFile.Close();}基本是这么写的 在happyparrot(快乐鹦鹉)的大作中提到要提高很容易。你在循环中将字符串都连好,最后一次写入文件不就行了。你在循环中这样中,说句心里话,有点傻我也尝试把所有的字符串都连好,但是循环比较多,而且好像字符串的操作也非常耗时,耗资源。根本就得不到改善。一个2M的字符串你用过吗? SaveDataFile.WriteString(strBuff);写在SaveDataFile.Close();之前就可以了吧? 想快直接用C++的标准函数写试试,CString也不要用,用指针、数组,试试,想省事还想效率高,可能不好办,或许还有其它办法 至少也该凑齐4K 再一次写入吧。。临时使用一下2M的缓存有什么不妥的?????而且你不要用Cstring凑啊,应该一开始就给CString分好2M空间啊。 最近也在做这样的程序,关注不过用的是fwrite的函数happyparrot(快乐鹦鹉) 和 lwglucky(才鸟) 说的分一个大的数组减少写入次数肯定可以提高效率,不过没有测试 用CStdioFile类writestring()写一个文本文件,用for循环实现。文件大小2M。竟然用了10秒。=====================ft, 你是来炫耀来了吗?用10秒,可以啦。不过我还是想知道有没有更好的提高速度的捷径。 直接开一个足够大的buffer,先把字符串都拼好,然后再一次写入呗。我觉得那你那10秒的时间大部分都花在字符串的连接上了。 关于Date Time Picker控件的存储问题 按钮控件的属性中有FLAT一项,请问在代码中怎么控制? WSAAsyncSelect怎样绑定在dll中对话框? ***可能是CSDN上有史以来最难的一个问题!*** (没敢发到技术区,怕让他们伤了自尊,把那的人气搞下来) 请教:怎样用C/C++或VC++写HTML解析器 这种链接错误怎么解决? 如何调试多线程的程序? 很急!做过监控的朋友帮帮忙! dkkdkd 谁有兴趣我们一起研究作com积分组件? bool 类型的全局变量,会不会线程冲突? 往工程中添加一个已存在的对话框,请大家帮忙
for(i=0;i<YDataLenth;i++){
strBuff="";
strTemp.Format("%8d",i+1); //点号
strBuff=strBuff+strTemp;
for(k=0;k<30;k++){
strTemp.Format("%8.3f ",*(pY[2][iChNum]+i)); //数值
strBuff=strBuff+strTemp;
}
strBuff=strBuff+"\n";
SaveDataFile.WriteString(strBuff);
}
SaveDataFile.Close();
}
基本是这么写的
要提高很容易。你在循环中将字符串都连好,最后一次写入文件不就行了。你在循环中这样中,说句心里话,有点傻我也尝试把所有的字符串都连好,但是循环比较多,而且好像字符串的操作也非常耗时,耗资源。根本就得不到改善。一个2M的字符串你用过吗?
写在
SaveDataFile.Close();
之前就可以了吧?
而且你不要用Cstring凑啊,应该一开始就给CString分好2M空间啊。
不过用的是fwrite的函数
happyparrot(快乐鹦鹉) 和 lwglucky(才鸟) 说的分一个大的数组
减少写入次数肯定可以提高效率,不过没有测试
=====================
ft, 你是来炫耀来了吗?用10秒,可以啦。
不过我还是想知道有没有更好的提高速度的捷径。