線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1896
推到 Plurk!
推到 Facebook!

這個迴圈如何提高它的速度?

 
w45
一般會員


發表:25
回覆:29
積分:15
註冊:2006-07-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-12-04 16:52:12 IP:222.135.xxx.xxx 未訂閱
各位老大,這個迴圈如何提高它的速度?這個速度很慢,我希望它能快一點
int iCoun;
AnsiString iFileInfo1[330000][2];
int tFileInfo1=330000;
AnsiString iFileInfo2[3300000][2];//第二個目錄
int tFileInfo2=330000;//檔總數量
for(int i=0;i {
for(int j=0;j {
if(iFileInfo2[i][1]==iFileInfo1[j][1])
{
iCoun ;
break;//結束本次迴圈
}
}
}
w45
一般會員


發表:25
回覆:29
積分:15
註冊:2006-07-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-12-04 16:58:41 IP:222.135.xxx.xxx 未訂閱

===================引 用 文 章===================
各位老大,這個迴圈如何提高它的速度?這個速度很慢,我希望它能快一點
? int iCoun;
? AnsiString iFileInfo1[330000][2];
? int tFileInfo1=330000;
? AnsiString iFileInfo2[3300000][2];//第二個目錄
? int tFileInfo2=330000;//檔總數量
??? for(int i=0;i??? {
??????? for(int j=0;j??????? {
??????????? if(iFileInfo2[i][1]==iFileInfo1[j][1])
??????????? {
????????????? iCoun ;
????????????? break;//結束本次迴圈
??????????? }
??????? }
??? }
GGL
資深會員


發表:104
回覆:600
積分:335
註冊:2006-11-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-12-08 11:52:28 IP:140.118.xxx.xxx 未訂閱
沒聽過可以提高迴圈速度的,處理的速度取決於CPU,我想可能的方法就是加快電腦速度吧。
subnike
一般會員


發表:1
回覆:1
積分:0
註冊:2004-01-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-12-08 12:43:09 IP:61.219.xxx.xxx 未訂閱
要不要考慮用TStringList.IndexOf
應該會比你用迴圈好吧
Coffee
版主


發表:31
回覆:878
積分:561
註冊:2006-11-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2006-12-08 13:26:42 IP:220.228.xxx.xxx 未訂閱
THashedStringList in IniFiles, see help for operations
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。
為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。
在引述到我的文時自然會儘量替各位想辦法,謝謝大家!
pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2006-12-08 14:14:45 IP:219.87.xxx.xxx 未訂閱
改用組合語言寫這一段
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
jniliuaz
一般會員


發表:0
回覆:3
積分:0
註冊:2006-12-07

發送簡訊給我
#7 引用回覆 回覆 發表時間:2006-12-08 14:48:24 IP:220.229.xxx.xxx 未訂閱
建議你將兩個目錄的內容字串 做成排序
之後再慢慢比
因為你的做法很像在比密碼

===================引 用 文 章===================
各位老大,這個迴圈如何提高它的速度?這個速度很慢,我希望它能快一點
int iCoun;
AnsiString iFileInfo1[330000][2];
int tFileInfo1=330000;
AnsiString iFileInfo2[3300000][2];//第二個目錄
int tFileInfo2=330000;//檔總數量
for(int i=0;i
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#8 引用回覆 回覆 發表時間:2006-12-10 22:43:48 IP:220.131.xxx.xxx 未訂閱
1.不要用 AnsiString. 直接用 char *
因為呼叫 class 的東西。多了數次的 push, pop
2.用了 char* 可以把 array 改成 point 這樣如果不是在很好的最佳化。它會比較快。
因為轉到 asm 時。它的呼叫不是用 index 方式。而是利用直接加法。
3.改成 char 的比較。
比起用 ansistring 的比較。要快得多。
不過。你有得改勒。
===================引 用 文 章===================
各位老大,這個迴圈如何提高它的速度?這個速度很慢,我希望它能快一點
int iCoun;
AnsiString iFileInfo1[330000][2];
int tFileInfo1=330000;
AnsiString iFileInfo2[3300000][2];//第二個目錄
int tFileInfo2=330000;//檔總數量
for(int i=0;i
w45
一般會員


發表:25
回覆:29
積分:15
註冊:2006-07-13

發送簡訊給我
#9 引用回覆 回覆 發表時間:2006-12-19 07:35:38 IP:222.135.xxx.xxx 未訂閱
啊,感謝暗黑破壞神大大,我按照大大的辦法改,發現確實快了不少
系統時間:2024-11-22 18:55:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!