2012-05-29 36 views
0

的兩個列表30+分鐘的循環,目前我的程序是這樣的:執行時間將在字典中

List<Dict<string, double>> GroupA; 
List<Dict<string, double>> GroupB; 
* All dictionaries have the same keys but with dif values 

foreach(string key in GroupA[0]) 
{ 
     List<double> GroupA_Values; 
     foreach(Dict d in GroupA) 
      GroupA_Values.add(d[key]); 

     List<double> GroupB_Values; 
     foreach(Dict d in GroupB) 
      GroupB_Values.add(d[key]); 

     CompareValuesFunction(GroupA_Values, GroupB_Values); 
} 

是否有這樣做的更有效的方法?

+7

這與「編譯時間」無關。 –

+5

這是無效的C#代碼。如果我們能看到你實際在做什麼,它會有所幫助,因爲它可能會對性能產生影響。 –

+1

CompareValuesFunction是做什麼的?在使用它們之前,你需要將這些值從字典中拷貝出來嗎? – Douglas

回答

0

您應該有一個Dictionary<string, List<string>>而不是有一個詞典列表,其中的值是與特定鍵相關的所有值的列表。

目前,您正在應對每個字典值的每個字典中的每個值。這根本不能很好地擴展。通過將所有值複製到列表中,所有內容都可以按比例縮放,而不是多項式。

此設置也將消耗更少的內存(爲了獲得快速的搜索速度,字典比其他數據結構消耗更多的內存)。

正如在評論中提到的,如果我們更瞭解CompareValuesFunction(即查看它的代碼),我們可能會建議進行其他改進。