Re[22]: Как мало людей понимает ООП...
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 08.08.12 10:02
Оценка: +1
Здравствуйте, vdimas, Вы писали:

V>Здравствуйте, Ikemefula, Вы писали:


V>>>>>Гы-гы, оценка O — это оценка сложности СВЕРХУ. А на реальных задачах обязательно интересует так же оценка СНИЗУ.

I>>>>Давай, покажи на примере Enumerable.ElementAt, вперёд.

V>>>Что тебе показать-то? Принцип подвижного маляра относительно неподвижного ведра с краской? ))


I>>"прирост до 50 раз " @ vdimas


V>Этот множитель сложился из двух множимых. См. исходный пост на русском языке: http://www.rsdn.ru/forum/philosophy/4843592.1.aspx
Автор: vdimas
Дата: 05.08.12
.


То есть, ты разницу между IList и List помножил на разницу между ручной и встроеной серилизацией ?
Но по любому , ты снова ошибся хотя уже не на порядок

Проверяем "разница м/у использованием List<> и IList<> в коде от 3-х до ~10-ти раз (от стоимости тела цикла зависит)"
Итерации по контейнерам длиной N, где в цикле выполняется единственная строчка в виде обращения к элементу для того что бы все итерации были в равных условиях, элементов 10КК, 10 прогонов + вычисление среднего.
Для сравнения приведены результаты по ArrayList и LinkedList и Array
цикл контейнер время_относительно_первой_строчки
foreach object[] 1
for object[] 1
foreach IList<object> 3.5
for IList<object> 4
for List<object> 1.7
foreach List<object> 2
ForEach List<object> 1.7
foreach ArrayList 6
for ArrayList 3
foreach LinkedList<object> 4

Итого, максимальная разница между List и IList в 2.5 раза. С valuetype вместо object разница еще меньше, всего 1.5 раза.
Вероятно "от 3-х до ~10-ти" ты получил вообще на пустых итерациях

V>А теперь тебе надо бъяснить пассаж насчет Enumerable.ElementAt.


Объясняю — использование List может быть очень дорогим удовольствием, а хочется, что бы некоторые функции вроде Linq2Objects работали крайне быстро, выход — IList<>

I>>Успокойся, не волнуйся, твои сценарии самые-самые, и да, это не беда, что только у тебя они используются.

I>>Для моих сценариев IList<> в самый раз, просто потому что List<> это ОЧЕНЬ дорогой контейнер. Настолько дорогой, что использовать его нельзя во многих сценариях.

V>Дык, никто не мешает использовать любые конкретные типы, в т.ч. обычный массив. И таки, если речь об итерировании, то итерирование по List<> нифига не дорогое удовольствие, в отличие от IList<>.


Ты похоже не понимаешь — если List это очень дорого, то и массив тоже будет так же дорого.
Реальная разница в 2.5 раза на почти пустой итерации. Если цикл чуть сложнее суммы элементов, эта разница становится ничтожной.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.