Лучшая DataStructure для HighPerformance Seek в c # - PullRequest
2 голосов
/ 13 января 2012

Мне было интересно, какая структура данных предложит мне лучшую производительность для моего сценария .... Мои требования: Возможен огромный набор данных в несколько миллионов записей, я собираюсь записать его только один раз, и я не собираюсь больше его менять в течение времени выполнения, мне не нужно, чтобы он хранился отсортированным образом .... Я думал о работе со списком, но если я использую запрос Linq и в условии условия InRange производительность очень плохая ... если я делаю foreach, производительность не так велика .... Я почти уверен, что есть лучший способ сделать это (я думал использовать структуру и или реализовать IEquatable, но производительность не улучшается ... Ведь самая быстрая структура данных в C # для запросов в моем диапазоне с оптимальными характеристиками? Мне нужна структура данных для хранения нескольких миллионов экземпляров класса Rnage

class Range
{
    public int Low {get; set;}
    public int High {get; set;}    
    public bool InRange(int val) { return val >= Low && val <= High; }
}

Примером логики будет List, но я боюсь, что класс List не оптимизирован для моих требований ... так как он сортируется, и мне не нужна сортировка, и это сильно влияет на производительность ...

спасибо за помощь!

1 Ответ

1 голос
/ 13 января 2012

Я думаю, что вы можете хотеть дерево интервалов. Пользователь Stackoverflow alan2here недавно задал несколько вопросов относительно проекта, над которым он работает; Эрик Липперт указал ему на интервальную древовидную структуру в одном из них .

...