用CStdioFile类writestring()写一个文本文件,用for循环实现。文件大小2M。竟然用了10秒。太恐怖了吧?请高手指点怎么提高写入速度?

解决方案 »

  1.   

    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();
    }
    基本是这么写的
      

  2.   

    在happyparrot(快乐鹦鹉)的大作中提到
    要提高很容易。你在循环中将字符串都连好,最后一次写入文件不就行了。你在循环中这样中,说句心里话,有点傻我也尝试把所有的字符串都连好,但是循环比较多,而且好像字符串的操作也非常耗时,耗资源。根本就得不到改善。一个2M的字符串你用过吗?
      

  3.   

    SaveDataFile.WriteString(strBuff);
    写在
    SaveDataFile.Close();
    之前就可以了吧?
      

  4.   

    想快直接用C++的标准函数写试试,CString也不要用,用指针、数组,试试,想省事还想效率高,可能不好办,或许还有其它办法
      

  5.   

    至少也该凑齐4K 再一次写入吧。。临时使用一下2M的缓存有什么不妥的?????
    而且你不要用Cstring凑啊,应该一开始就给CString分好2M空间啊。
      

  6.   

    最近也在做这样的程序,关注
    不过用的是fwrite的函数
    happyparrot(快乐鹦鹉) 和 lwglucky(才鸟) 说的分一个大的数组
    减少写入次数肯定可以提高效率,不过没有测试
      

  7.   

    用CStdioFile类writestring()写一个文本文件,用for循环实现。文件大小2M。竟然用了10秒。
    =====================
    ft, 你是来炫耀来了吗?用10秒,可以啦。
    不过我还是想知道有没有更好的提高速度的捷径。
      

  8.   

    直接开一个足够大的buffer,先把字符串都拼好,然后再一次写入呗。我觉得那你那10秒的时间大部分都花在字符串的连接上了。