List vs LinkedList vs Array
В каких случаях что лучше использовать?
C#-FAQ вопрос полезный для прохождения собеседований, а так же весьма полезен с теоретической точки зрения.
Ответ
Я сделал некоторые тесты. Думаю, многим будет интересно посмотреть на результаты. Исходники тестов по линке: https://github.com/ukushu/DataStructuresTests.git
Короткие выводы:
Array нужно использовать:
Максимально часто, если это возможно (быстродействие и оптимальность памяти)
Если не нужно добавлять ячейки
Если ожидаемый вес < 85000b
Если нужна Random Access Speed
List нужно использовать:
Если нужно добавлять ячейки в конец списка (в большом/малом количестве)
Если нужно добавлять ячейки в начало/середину списка (в малом количестве)
Если ожидаемый вес < 85000b
Если нужна Random Access Speed
Предпочтительно инициализировать с уже набранным количеством элементов, если это возможно.
LinkedList
Если нужно добавлять ячейки в начало/середину/конец листа в большом количестве
Если нужен только последовательный доступ (не нужны индексы для random access)
Хорошо подходит для хранения увесистых обьектов в относительно небольшом количестве т.к. под каждую ячейку так же нужно выделять память на 2 ссылки.
Детальные выводы:
светлокрасный фон -- плохой результат.
желтый фон -- нормальный(средний) результат.
светлозеленый фон -- хороший результат.
И немного информации, которую просто интересно узнать:
LinkedList внутри вообще не является List в языках .NET. LinkedList
ВАЖНО
Если кто нашел ошибки -- укажите пожалуста в коментариях. Независимо
от того, ошибки в коде, или в моих тестах, или моих выводах. :)
Комментариев нет:
Отправить комментарий