Здравствуйте, Serginio1, Вы писали:
I>>Я не сильно понимаю эти результаты. Что такое удавы и какой код получил 3 удава? Самый быстрый это 3 или 5 ?
S>Ну посмотри статью. Там все написано и расписано.
Я же сказал — мне непонятно. Выглядит, как будто магия
То есть, x[0] оказывается медленее чем x.First() который унутре все равно вызовет x[0]
Подозреваю, некорректный тесты.
I>>Я вижу, что здесь непойми что и не ясно, зачем вообще выделять память. Зачем делать add() если можно просто вызвать соответствующую функцию?
I>>Память нужно выделять в том случае, если у нас есть многочисленные повторные проходы по источнику.
S> В том, что нужно получать итератор. А здесь как раз идет сравнение с итератора и через прямое вычисление без итераторов.
S>Так или иначе идет вызов MoveNext на стороне итератора идут 10 вызовов кстати через индекс так как передан массив.
Непонятно — x[0] стал медленее того же x[0] завернутого в функцию с телом yield x[0].
Тебе не кажется это странным?
S>Но нужны коллекции для заиси в базу, отображения итд
I>>То ты сэкономишь кучу памяти, но при этом работа с источником окажется примерно в 1000 раз медленнее.
I>>И для оптимизации используется кеширование коллекции.
S>В реалии Отборов может быть великое множество. Памяти не хватит кэшировать.
В реальности оптимизации подбираем под соответствующие узкие места, а не абы как.
S>Мало того данные имеют свойство меняться
S>3 попугая для
S>[cs]
S>public int Iterative()
S> {
S> var counter = 0;
S> foreach (var item in items)
S> {
S> if (item % 10 == 0)
S> counter += item;
S> }
Если попугаи это секунды, то следовательно самый быстрый код это простой проход по массиву, как я тебе и говорил.
А раз самый медленный это 5.08, то это почти в два раза хуже.
Ты точно думаешь, что две секунды это почти так же хорошо, как и одна?
S>Но когда нам нужны коллекции заполнение List оказывается значительно дороже.
А кто тебя просит их создавать?
Где здесь коллекция:
let state = initial();
let i = 0;
while(true) {
i++;
state = state.next(i);
if(isGoodEnough(state, i)) {
return {state, i};
}
}