※ 引述《streitleak.bbs@aeug.twbbs.org (亞斯爾‧馮‧修特萊)》之銘言:
> ※ 引述《LPH66.bbs@ptt.cc (運命のルーレット廻して)》之銘言:
> > 其實我很好奇你是用什麼方法讀的...
> strcpy(tmpstr,Main->StringList->Lines->Strings[i].c_str());
依照你前面所說的,你是用sscanf將個別的field取出吧!?
如果是這樣,那麼這個strcpy()不就是多餘的了?
直接用
sscanf(Main->StringList->Lines->Strings[i].c_str(), "%d %d %d", &a, &b, &c);
這樣不就好了?
你的時間真的慢的有點誇張,我想你也許應該先想想如何把程式中多餘的程式碼移除。
另外,你用StringList可能會配置過多的記憶體然後將所有的資料讀入。
而且StringList還要花時間判斷換行字元。
總而言之,何不回歸到簡單一點的方法,直接用fscanf()呢?
> > 明明什麼方法都不會慢到哪裡去...
> > 還有你這個「一行一秒」的時間是怎麼得知的?
> Main->Label->Caption=AnsiString(time(NULL));
你是根據總共的時間除上資料筆數來當成每筆所需的時間嗎?
這樣的算法會有問題,也許你的程式該開始很快,到了後面因為記憶體的大量
配置,而變成一筆資料需要好幾秒也不一定阿?
--
Gary W. Lee
URL: http://www.dev.idv.tw/
A web site about C/C++, Tcl, Python, wxWidgets, UNIX/Linux, Windows ..., etc.
--
※ Origin: 元智大學 風之塔 <bbs.yzu.edu.tw>
※ From : 59-112-232-40.dynamic.hinet.net
※ X-Info: Re: 檔案分析問題 如何提升資料解析速度
※ X-Sign: 11SEF6M8EMHke5tiQVoQ (06/01/13 13:38:30 )