我需要一种更快的方法来创建索引文件.应用程序生成要编制索引的项目对.我目前将生成的每一对添加到已排序的字典中,然后将其写入磁盘文件.这种方法很有效,直到添加的项目数超过一百万,此时它会减慢到不可接受的程度.可以有多达300万个数据项被索引.我更喜欢避免使用数据库,因为我不想显着增加部署包的大小,现在不到一兆字节的一半.我尝试了Access,但它甚至比排序的字典慢 - 如果它有一个有效的批量加载实用程序然后可能工作,但我找不到这样的Access工具.
有没有更好的方法来推广我自己的索引?
SortedDictionary真的是瓶颈吗?与I/O相比?
你真的应该首先剖析它以防止优化错误的部分.
但作为提示,当您有1M或更多项目时,最好预先分配您的词典.初始容量为2M左右.
//var index = new SortedDictionary(2 * 1024 * 1024); // not supported, it's a tree
var index = new SortedList(2 * 1024 * 1024);
Run Code Online (Sandbox Code Playgroud)
如果你的词典是问题,我希望它比实际的索引搜索更快地重新分配.