Почему generic.list медленнее, чем массив?
Наверное, нужно дать расслабиться тем, кто не говорит по-английски.
Как еще можно улучшить английский, если им никто не скажет, когда он особенно плох?
Хороший момент, я думаю, что редактирование вопроса для удобства чтения, вероятно, поможет больше всего.
Дать расслабиться? Для использования Y? Ну давай же.
для справки: был по крайней мере один голос против, но это был не я.
@Joel: я тоже :) В конце концов, это сайт программирования. Тем не менее, моя готовность терпеть нулевые усилия, ожидая, что другие ответят на 100%, намного ниже, чем раньше ...
Было бы здорово, если бы вы дали определение «медленнее». Существует слишком много операций, которые можно выполнить как со списком, так и с массивом, чтобы мы могли интерпретировать то, что вы имеете в виду под словом «медленнее».
@ Джоэл, я научился никогда не предполагать, кто голосовал каким образом, поскольку меня обвинили в отрицательном голосовании, хотя я тоже этого не сделал (хотя я и поддержал твой ответ).
1. В .NET нет сущности под названием "generic.list". Может ты имел ввиду "Список <T>"? 2. Какую операцию вы пытаетесь сделать? 3. Какие измерения вы выполнили, чтобы прийти к своему заключению?





Общий список немного медленнее, чем массив, но в большинстве случаев вы этого не заметите. В основном это связано с более сложным поиском: говорят, что List использует массив «под капотом», но не гарантируется, что узлы в соседней памяти будут храниться так же, как в массиве.
Тем не менее, я видел некоторые тесты еще в 2005 году (сейчас не могу найти ссылку), и разница очень небольшая.
Кроме того, список имеет ряд важных преимуществ по сравнению с массивом: в основном это тривиальное добавление или удаление элементов. Гораздо проще использовать список, если вы не знаете, сколько элементов вам понадобится или когда это количество будет отличаться. В этих случаях (и, честно говоря, это большую часть времени), вам, вероятно, следует использовать массив нет.
хороший ответ, раз у вас достаточно очков, возможно, вы могли бы отредактировать вопрос.
Я не совсем понимал, каков был исходный смысл. Да, я знаю, что это кажется странным, поскольку я дал ответ, но предоставление потенциально неправильного ответа не уничтожит вопрос, как это сделало бы редактирование.
Что ж, основной блок данных (массив) будет просто смежным, но согласен: он, вероятно, не является смежным с экземпляром List <T>.
С точки зрения производительности чтения есть два фактора:
List<T> будет содержать поле T[] и должен разыменовать его)T[] - например, устранение проверки границ во время цикловОднако гораздо проще добавить к List<T>, в частности, потому что он сохраняет свободное пространство - то есть ему не нужно изменять размер / копировать весь массив только для того, чтобы добавить один элемент.
грамматика? Ваш вопрос как таковой едва ли можно понять.