Является ли SortedDictionary узким местом? По сравнению с I / O?
Вы действительно должны профилировать это в первую очередь, чтобы избежать оптимизации неправильных частей.
Но в качестве подсказки, если у вас есть 1 МБ или более элементов, рекомендуется заранее выделить словарь. Дайте ему начальную емкость 2M или около того.
//var index = new SortedDictionary(2 * 1024 * 1024); // not supported, it's a tree
var index = new SortedList(2 * 1024 * 1024);
Если ваш словарь является проблемой, я бы ожидал, что он будет из-за постоянного перераспределения раньше, чем из фактических поисков по индексу.