2012-12-21 38 views
0

在啓動時,我將一些大數據讀入字典中。然後在處理部分,值會改變很多次。問題是每次查找字典索引需要很長時間。而且我不能使用'不安全'來訪問指針。引用int或其他值類型

所以我可以做些類似的事情;

int dGeoLocationNorth = rawDataStore["GeoLoc_AC_154"]; // Raw data store is a custom implementation of a dict which is optimized 
Console.WriteLine(dGeoLocatioNorth); // Output: 295 
Console.WriteLine(rawDataStore["GeoLoc_AC_154"]); // Output: 295 
dGeoLocationNorth = 1337; 
Console.WriteLine(dGeoLocatioNorth); // Output: 1337 
Console.WriteLine(rawDataStore["GeoLoc_AC_154"]); // Output: 1337 

任何想法如何我可以實現這個?

+1

您存儲了多少個值?你在字典中存儲什麼類型的值?你怎麼定義「太久了?」 –

+0

如果索引查找需要太長時間,那麼您爲什麼自定義詞典進行了優化? – unholysampler

+1

Dictionary類實現具有O(1)的緩衝邊界,用於通過鍵*插入/更新/提取/刪除*,並且它是一個「非常小的C」。雖然基於散列的字典並不總是足夠的(或者說,並不總是理想的),但如果對性能有疑問,請務必提供實際的問題案例以獲得更好的響應。 – 2012-12-21 02:32:24

回答

1

您可以創建一個類來包裝您的值並將這些對象存儲在您的字典中。

var dGeoLocationNorth = rawDataStore["GeoLoc_AC_154"]; // Raw data store is a custom implementation of a dict which is optimized 
Console.WriteLine(dGeoLocatioNorth.Value); // Output: 295 
Console.WriteLine(rawDataStore["GeoLoc_AC_154"].Value); // Output: 295 
dGeoLocationNorth.Value = 1337; 
Console.WriteLine(dGeoLocatioNorth.Value); // Output: 1337 
Console.WriteLine(rawDataStore["GeoLoc_AC_154"].Value); // Output: 1337 

它不是太整齊,但它應該工作。

相關問題