2012-12-21 41 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 

它不是太整齐,但它应该工作。

相关问题