精華區beta Programming 關於我們 聯絡資訊
※ 引述《streit.bbs@aeug.twbbs.org (亞斯爾‧馮‧修特萊)》之銘言: > 剛修改了一下....跟clock的關係不大 > 反而是前面的版友說的根GUI 有關... > 現在用file跟每千筆才秀一次紀錄後 速度明顯提升非常多... > 每千筆約差30~40左右....所以應該是gui造成的... 我隨便寫了一個程式測試一下,61萬筆資料大概10秒多一點。 不過我的電腦應該比你的快。Pentium4 3GHz. 1GB ram. void __fastcall TForm1::Button1Click(TObject *Sender) { struct _SrcData { char CallerID[256]; char CalleeID[256]; time_t StartTime; time_t EndTime; time_t Seconds; void *Next; } SrcData; char tmp[256]; struct tm tmStart; struct tm tmEnd; int count; int bad; int tmp2; int ret; FILE *fp; bad = 0; count = 0; fp = fopen("d:\\xxx.log", "r"); if (fp == NULL) { ShowMessage("Cannot open file"); return; } while(!feof(fp)) { ret = fscanf( fp, "%20s %20s %30s %04d%02d%02d-%02d%02d%02d %04d%02d%02d-%02d%02d%02d %07d", SrcData.CallerID, SrcData.CalleeID, tmp, &tmStart.tm_year, &tmStart.tm_mon, &tmStart.tm_mday, &tmStart.tm_hour, &tmStart.tm_min, &tmStart.tm_sec, &tmEnd.tm_year, &tmEnd.tm_mon, &tmEnd.tm_mday, &tmEnd.tm_hour, &tmEnd.tm_min, &tmEnd.tm_sec, &tmp2); if(ret != 16) { ++bad; continue; } SrcData.StartTime = mktime(&tmStart); SrcData.EndTime = mktime(&tmEnd); SrcData.Seconds = tmp2; if(count % 1000) { ProgressBar1->Position = 100 *(float(count) / 610000); } ++count; } fclose(fp); Edit1->Text = AnsiString("GOOD: ") + IntToStr(count); Edit2->Text = AnsiString("BAD: ") + IntToStr(bad); } -- 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: 11SH53MggJL/t9cqY/M. (06/01/14 14:04:38 )