Информация об изменениях

Сообщение Re[3]: Как быстрее формировать список, который после заполне от 26.01.2020 18:24

Изменено 27.01.2020 3:30 Sharowarsheg

Re[3]: Как быстрее формировать список, который после заполне
Здравствуйте, Passerby, Вы писали:

P>>>Если есть список, который после заполнения необходимо отсортировать.

P>>>Что быстрее: сразу вставлять элемент в нужное место в списке или после заполнения всего списка его сортировать?

S>>Большой ли список, часто ли повторяется процесс, список чего именно, какой язык? О каких вообще порядках размеров и о каком типе данных речь?

P>Размер списка от 0 до 400, процесс повторяется часто, List<(string,decimal)>, C#.

Маленький сравнительно. Я бы сказал заполнять список и потом сортировать, да и всё. Хорошо было бы радикально переработать как-то алгоритм, так, чтобы вообще не нужен был ни список, ни заполнение, ни сортировка. Я всегда считал самым классным вариантом — переработать алгоритм так, чтобы он стал вообще не нужен, а сразу получался ответ. Но здесь, если этого сделать, ничего особо не получится выиграть.

Нормальный вариант, либо взять List и сортировать, либо взять SortedDictionary (а повторы бывают в данных?), набить его и потом переписать в List или куда тебе его надо. SortedList бестолковый, он устроен на двух массивах внутри, у него вставки не алё. SortedDictionary лучше, устроен как дерево массивов или ещё какая-то такого типа каракатица, но на этом размере я сомневаюсь, что будет выигрыш какой-то.

Если довольно часто повторяется, в смысле, скажем, от миллиона раз, то можно подумать аллокации поэкономить (например, никогда не делать новый List<>, а только делать .Сlear старому), ну и вообще подумать, что можно повторно использовать.

Распараллеливать процесс, где всего 400 элементов, и обработки никакой нету, не выглядит перспективно.
Re[3]: Как быстрее формировать список, который после заполне
Здравствуйте, Passerby, Вы писали:

P>>>Если есть список, который после заполнения необходимо отсортировать.

P>>>Что быстрее: сразу вставлять элемент в нужное место в списке или после заполнения всего списка его сортировать?

S>>Большой ли список, часто ли повторяется процесс, список чего именно, какой язык? О каких вообще порядках размеров и о каком типе данных речь?

P>Размер списка от 0 до 400, процесс повторяется часто, List<(string,decimal)>, C#.

Маленький сравнительно. Я бы сказал заполнять список и потом сортировать, да и всё. Хорошо было бы радикально переработать как-то алгоритм, так, чтобы вообще не нужен был ни список, ни заполнение, ни сортировка. Я всегда считал самым классным вариантом — переработать алгоритм так, чтобы он стал вообще не нужен, а сразу получался ответ. Но здесь, если этого нельзя сделать, ничего особо не получится выиграть.

Нормальный вариант, либо взять List и сортировать, либо взять SortedDictionary (а повторы бывают в данных?), набить его и потом переписать в List или куда тебе его надо. SortedList бестолковый, он устроен на двух массивах внутри, у него вставки не алё. SortedDictionary лучше, устроен как дерево массивов или ещё какая-то такого типа каракатица, но на этом размере я сомневаюсь, что будет выигрыш какой-то.

Если довольно часто повторяется, в смысле, скажем, от миллиона раз, то можно подумать аллокации поэкономить (например, никогда не делать новый List<>, а только делать .Сlear старому), ну и вообще подумать, что можно повторно использовать.

Распараллеливать процесс, где всего 400 элементов, и обработки никакой нету, не выглядит перспективно.