SortedSet / SortedList с лучшей производительностью LINQ?

Позволять'скажем, у нас есть отсортированная коллекция, такая какSortedSet или жеSortedList со многими (10M +) элементами. Происходит много запросов, поэтому производительность имеет значение. Из сравнения времени выполнения ям под впечатлением, что LINQ to Objects неt не использует преимущества сортировки, поэтому не использует потенциальный прирост производительности.

Первый пример - подсчет элементов в диапазоне:

        var mySortedSet1 = new SortedSet();
        // populate ...
        int rangeCount = (from n in mySortedSet1
                          where ((n >= 1000000000) && (n  s).OrderBy(s => s);
        foreach (var n in q)
        {
            Console.WriteLine(n);
        }

Если LINQ toSQL Объекты должны были воспользоваться преимуществами сортировки, она могла эффективно объединить все отсортированные наборы в один большой отсортированный список в O (n). .OrderBy для результата может быть проигнорировано, поскольку список уже отсортирован.

Вместо этого SelectMany объединяет все отсортированные наборы в один большой (теперь несортированный) список, для которого потребуется другая O (n log n) сортировка. Это можно легко проверить, удалив .OrderBy и соблюдая порядок, в котором элементы записываются на консоль.

Мой вопрос:уже есть альтернативная, более эффективная реализация LINQ для SortedSet / SortedList?

i4o выглядит очень интересно, но кажется, что для повышения производительности запросов к исходной коллекции требуются вторичные коллекции индексов. Я просто хочу, чтобы запросы в моих отсортированных коллекциях выполнялись быстрее, используя преимущества сортировки.

Ответы на вопрос(1)

Ваш ответ на вопрос