2014-03-22 6 views
-1

У нас есть большой список из 1000 предметов с большими классами (одного типа). Список вставляется или удаляется очень часто. Около 10 или 20, 30 предметов, вставленных одновременно. С каждым элементом я нахожу точное положение для вставки с использованием алгоритма быстрого поиска. Но мне интересно, добавлю ли я все элементы в конец списка, а затем сделайте сортировку с помощью List.Sort (я считаю, что MS использует быстрый алгоритм сортировки), тогда это будет лучше: потреблять меньше CPU, чем текущий? Я использую C#, .Net Framework 2.0.Найдите точное положение, затем вставьте или добавьте затем сортировку? Что лучше?

+1

Возможно. Ответ на каждый вопрос о производительности - это измерение и выяснение **. –

+0

Как насчет использования SortedList? http://msdn.microsoft.com/en-us/library/system.collections.sortedlist(v=vs.110).aspx – spender

+0

Как вопрос памяти, мы используем List только потому, что есть тысячи List, таких как что. – QuangND

ответ

2

Существует редко общий ответ на такие вопросы. Это зависит от вашего сценария. Но вот промежуточное предложение между двумя выборами, которые вы поднимаете:

Сортировка списка элементов, которые нужно вставить (для этого требуется сортировка 10 - 30 элементов на основе вашего описания). Затем вставьте их в порядок. Обратите внимание, что как только вы найдете позицию для вставки первого элемента, позиция для вставки второго элемента должна быть строго после, что местоположение (и так далее, для каждого последующего элемента), поэтому вам не нужно искать, начиная с начиная снова. В этом случае список, который нужно вставить, нужно искать только в том случае, если он будет поддерживать порядок после каждой вставки.

+0

Да, мои списки были отсортированы перед вставкой. Я думаю, что я делаю это правильно (затем найдите позицию, затем вставьте), но программное обеспечение потребляет много CPU :( – QuangND

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

  • Нет связанных вопросов^_^