我正在创建一个具有以下结构的List
Item 1
Key:Value
Key:Value
Key:Value
... (between 100 to 1000 pairs)
Item 2
Key:Value
Key:Value
Key:Value
... (between 10 to 1000 pairs)
Item 3
... (upto about 300,000 items)
我开始使用以下
Dictionary<string, SortedList<string, string>>
问题是在添加了大约10,000件商品之后,它开始以指数方式放缓。
然后我搬到了
List<Tuple<string, SortedList<string, string>>>
这大约有20,000个条目,然后开始减速,40,000个项目呈指数级缓慢
我正在试图找出添加创建上面我指出的项目结构列表的最快方法。
我只想保留订单插入,我只是想按FIFO顺序插入和读回数据。插入后不会修改任何数据元素。
鉴于简单的FIFO需求是最快的方式来存储和检索数据?
我找不到FIFO的List,Dictionary,Sorted List,Tuple等之间的任何明确比较。或者是否还有其他一类我应该使用?
我可以改变访问数据的方式,即不需要字典,唯一的要求是顺序插入和回读(FIFO)所有项目和KeyValue对
更新:以下是代码的大纲
我也尝试了Queue<KeyValuePair<string, Dictionary<string, string>>>
但是在插入约25,000个项目之后再次放慢了速度。
创建列表:
Dictionary<string, Dictionary<string, string>> retVal = new Dictionary<string, Dictionary<string, string>>();
List<string> fileNames = GetNames();
foreach (string filePath in fileNames)
{
Dictionary<string, string> entries = GetKeyValuePairs(filePath);
if (!retVal.ContainsKey(filePath))
retVal.Add(filePath, entries);
}
return retVal
回读:
foreach (string filePath in retVal)
{
Dictionary<string, string> entries = retVal[filePath];
foreach (string key in entries.Keys)
{ ... }
}