Size: a a a

Programming Offtop

2020 March 25

AM

Andrew Mikhaylov in Programming Offtop
Alexander Nozik
Нет,  там надо еще смотреть на раскладку в памяти. У линкед листа и у массива сложность по проходу подряд одинаковая, но будет существенная разница по скорости
И то верно
источник

AN

Alexander Nozik in Programming Offtop
Igor
А теребе не все равно? Ты мне кажется первопричину не там ищешь.

Почему в реакте (compose/litho/anvil...) рендерят весь UI по стейту?
Почему в RecycleView добавили AsyncListDiff (diffutil)?

Потому что ментальная модель использования имутабельных данных гораздо проще - все.
(делай просто, а фрейворк написанный умными людьми прожует и оптимизирует)

Персистентные коллекции, только амортизируют стоимость вставки.
А потом встает вой про то, что все сайты - какашки, грузятся долго и жрут память, куда только мир катится? Вот в наше время...
Я, кстати, всячески за ментальные модели и за запрет преждевременных оптимизаций. Да и я за персистентные коллекции в тех немногочисленных случаях, где они нужны. Я против упарывания за идейную "правильность" без разбора, нужна она или нет.
источник

AN

Alexander Nozik in Programming Offtop
Кстати допилить персистентные коллекции в том же котлин не составляет труда, если проигнроировать перформанс.
источник

AN

Alexander Nozik in Programming Offtop
источник

ML

Mikhail Levchenko in Programming Offtop
Alexander Nozik
А потом встает вой про то, что все сайты - какашки, грузятся долго и жрут память, куда только мир катится? Вот в наше время...
Я, кстати, всячески за ментальные модели и за запрет преждевременных оптимизаций. Да и я за персистентные коллекции в тех немногочисленных случаях, где они нужны. Я против упарывания за идейную "правильность" без разбора, нужна она или нет.
Слишком долго разбираться, нужна "правильность" или нет. Если в 80% случаев так в среднем по показателям ясность/скорость/производительность/поддерживаемость лучше, то пользуешься этим всегда
источник

AN

Alexander Nozik in Programming Offtop
Mikhail Levchenko
Слишком долго разбираться, нужна "правильность" или нет. Если в 80% случаев так в среднем по показателям ясность/скорость/производительность/поддерживаемость лучше, то пользуешься этим всегда
И получаешь "все тормозит". Вопрос умолчаний. В котлин считается, про более прагматичный подход - это readOnly + API контроль за изменениями. Я считаю, что подход правильный. Допилить иммутабильные коллекции и пользоваться никто не мешает, но это будет не дефолт.
источник

VP

Vladimir Petrakovich in Programming Offtop
Иммутабельные интерфейсы очень нужны, иначе приходится постоянно копировать
источник

V

Vladimir in Programming Offtop
раз уж пошел разговор про мутабельные/имутабельные коллекции, мб есть у кого интересное чтиво на эту тему? Потому что пока в голове не укладываются все преимущества имутабельных коллекций перед мутабельными.
В частности про тот же AsyncListDiff, не ясно нахрена мне пересчитывать всю коллекцию после минорных изменений
источник

КР

Кирилл Романенко in Programming Offtop
Кирилл Романенко
Ну я хочу побенчмаркать котлин лист vs персистентные списки из одной либы.)
Тестировал коллекции (не примитивов) размером 100_000, read only (котлиновские) и persistent (тоже от жб, как я понимаю). Если один раз сложить две коллекции и один раз к персистентной добавить коллекцию, то обычные выигрывают в 5 раз по перфомансу. А если 100 раз складывать (с предыдущим результатом), то персистентные выигрывают в 21 раз.
источник

КР

Кирилл Романенко in Programming Offtop
Просто занимательные циферки ради фана. :)
источник

КР

Кирилл Романенко in Programming Offtop
Надо ещё в тест добавить мутабельные коллекции
источник

I

Igor in Programming Offtop
Кирилл Романенко
Просто занимательные циферки ради фана. :)
jmh мерешь?
источник

КР

Кирилл Романенко in Programming Offtop
Igor
jmh мерешь?
+
источник

КР

Кирилл Романенко in Programming Offtop
Igor
jmh мерешь?
3 прогревочных, 5 итераций, сравнивал по среднему
источник

AN

Alexander Nozik in Programming Offtop
Кирилл Романенко
Тестировал коллекции (не примитивов) размером 100_000, read only (котлиновские) и persistent (тоже от жб, как я понимаю). Если один раз сложить две коллекции и один раз к персистентной добавить коллекцию, то обычные выигрывают в 5 раз по перфомансу. А если 100 раз складывать (с предыдущим результатом), то персистентные выигрывают в 21 раз.
Там еще от размера зависеть будет. 100 раз сам с собой или с первой.
источник

КР

Кирилл Романенко in Programming Offtop
Alexander Nozik
Там еще от размера зависеть будет. 100 раз сам с собой или с первой.
Ну на то и был расчёт.)
источник

VP

Vladimir Petrakovich in Programming Offtop
Alexander Nozik
Там еще от размера зависеть будет. 100 раз сам с собой или с первой.
Если 100 раз сам с собой - надо мерить Collections.nCopies(). И тогда ещё посмотрим, кто победит 😂
источник

Sergey λ in Programming Offtop
источник

Sergey λ in Programming Offtop
источник

КР

Кирилл Романенко in Programming Offtop
Как же jmh заебал ломаться, это пиздеееееец. После каждого изменения приходится что-то чинить.
источник