2010-11-09 4 views
3

У меня есть List<Discount>, содержащий около 100000 скидок. Здесь Discount - это класс, и у меня есть List<Product>, который имеет около 200000 записей.Binary Искать список объектов?

У меня есть для каждого, который выполняет итерации по всем записям List<Product>. Для каждой итерации через список продуктов я беру некоторые значения из элемента продукта и добавляю его в класс обертки. Этот класс-оболочка также содержит поле «Скидка», и для каждого продукта я должен перебирать все полученные скидки.

Проблема с итерацией через этот список продуктов требует много времени. Каков наилучший способ сделать это быстрее?

Я думал о бинарном поиске, но мне трудно его реализовать?

Любое предложение относительно того, как это сделать?

ответ

4

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

+0

Thanks Heinz. Это намного быстрее по сравнению с List. Чем больше я могу улучшить производительность? – francis

+0

На данный момент ничего не могу придумать. Если вам нужно обернуть все элементы продукта, вы не сможете обойти итерацию через свой «Список ». Поскольку вы помещаете скидки в «Словарь», поиск этих значений должен быть довольно быстрым. – Heinzi

1

Считаете ли вы использование списка Dictionary вместо списка? Поиски будут намного быстрее.

3

Помимо предложения Heinzi, я бы также предложил пересмотреть дизайн/реализацию, которая заставляет вас загружать сотни тысяч объектов в память и выполнять перекрестный поиск друг против друга - возможно, вам следует внедрять эта логика на уровне базы данных, чтобы получить лучшую производительность.

+1

+1, хорошая точка. – Heinzi

Смежные вопросы