ホーム » 2016 » 4月 » 27

日別アーカイブ: 2016/04/27

2016年4月
 12
3456789
10111213141516
17181920212223
24252627282930

カテゴリー

アーカイブ

ブログ統計情報

  • 74,905 アクセス

::SaveUTF8

xml などを保存する時, ::SaveUTF8(outName, outStr) ; の様にしていた.
動作としてはそれ程問題なかったように思うが,32 ビット exe で対象のデータが 50 MB 位を超えるとメモリ不足に…
例えば 100 MB の xml データの場合,
  もとのデータの Xml_E で 200 M,tstring の outStr でも 200 M.
  保存する前に,UNICODE から,UTF8 に変換するために 100 M.
200 M の連続領域が確保できないことが多いみたい.


::SaveUTF8 で,v_tstring (文字列の配列)形式のものを作成.
  bool SaveUTF8 (LPCTSTR pathName,const v_tstring& strAry)
  {
    FILE* ofp = ::Open_File(pathName,_T(“wb”)) ;
    for (size_t index=0 ; index<strAry.size() ; index++) {
      tstring str = strAry[index] + _T(“\r\n”) ;
      std::string u8Str = ::To_UTF8(str.c_str()) ;
      v_char v_chr = ::To_v_char(u8Str) ;
      ::fwrite(&v_chr[0],sizeof(char),v_chr.size(),ofp) ;
      }
    ::fclose(ofp) ;
    return true ;
    }
UNICODE から UTF8 への変換時間などはそれほど気にならない.100 MB のファイル 800,000 行で 10 秒程度.


幾つかの形式で保存した時のファイルサイズ

  OBJ AMF DAE X3D PLY AC
サイズ MB 111 368 85 29 191 57
比率 1.00 3.31 0.76 0.26 1.71 0.51
この投稿は役に立ちましたか? 役に立った 役に立たなかった 0 人中 0 人がこの 投稿 は役に立ったと言っています。