Size: a a a

2020 September 14

КС

Кирилл Спасибович... in Svelte [svelt]
может это будет дешевле в итоге
источник

КС

Кирилл Спасибович... in Svelte [svelt]
интересно, будет ли пачка компонентов через each, отображающая объекты массива реагировать вся на изменение одного из объектов в иммутабельном режиме, или вообще никаких шестеренок крутится не будет кроме того одного изменившегося объекта
источник

КС

Кирилл Спасибович... in Svelte [svelt]
мне чем понравился вариант с айдишками тогда твой первый, что заниматься иммутабельностью с массивом айдишек (о как) - гораздо проще, чем с массивом объектов :)
источник

AS

Alexey Schebelev in Svelte [svelt]
Пока в игре не 10К карт мне кажется вообще разницы никакой
источник

КС

Кирилл Спасибович... in Svelte [svelt]
ну я не про игру, а в принципе про стейт менеджмент :)
источник

КС

Кирилл Спасибович... in Svelte [svelt]
какое принятое решение потом не укусит за что-нибудь, когда станет образно говоря 10К карт
источник

КС

Кирилл Спасибович... in Svelte [svelt]
и не придётся всё перепиливать, потому что принял неправильное решение
источник

AS

Alexey Schebelev in Svelte [svelt]
В любом варианте each будет бегать по массиву при инвалидации. Если уж пришлось рендерить  10К карт, то там уже придется искать какие-то неожиданые решения для оптимизаций. Например не делать так:
{#each... as card}
<div class:flipped={card.flipped}/>
{/each}
а уже что-то вроде:
{#each ... as card}
<div on:click={e=>{e.target.toggleClass('flipped'); changingstate()}}
{/each}

что уже конечно перечеркивает весь стейтдривен
источник

AS

Alexey Schebelev in Svelte [svelt]
Это кстати пример, почему солид в тесте фреймворков сильно опередил свелте на тесте где выделяется по клику 1 из 10К строк
источник

КС

Кирилл Спасибович... in Svelte [svelt]
Alexey Schebelev
В любом варианте each будет бегать по массиву при инвалидации. Если уж пришлось рендерить  10К карт, то там уже придется искать какие-то неожиданые решения для оптимизаций. Например не делать так:
{#each... as card}
<div class:flipped={card.flipped}/>
{/each}
а уже что-то вроде:
{#each ... as card}
<div on:click={e=>{e.target.toggleClass('flipped'); changingstate()}}
{/each}

что уже конечно перечеркивает весь стейтдривен
в этом плане мне нравится Set для айдишек и class={selectedIds.has(item.id)}
очень быстро
у меня там до 14000 строк (не все видимы) и ему норм
клик мгновенно отрабатывает и меняет стейт
источник

AS

Alexey Schebelev in Svelte [svelt]
так они в любом случае быстро будет - в том же фреймворктесте частота процессора искуственно уменьшается в 16 раз чтобы хоть как-то разницу отловить
источник

AS

Alexey Schebelev in Svelte [svelt]
возможно на каком-то утюге или микроволновке будет не столь быстро
источник

КС

Кирилл Спасибович... in Svelte [svelt]
Alexey Schebelev
возможно на каком-то утюге или микроволновке будет не столь быстро
ну лишь бы на снапдраконе 625 завозило :)
источник
2020 September 15

КС

Кирилл Спасибович... in Svelte [svelt]
по сути объекты так же быстры как Set'ы, медленнее были бы только массивы, где нужно на каждый объект ещё и массив пролупать?
источник

КС

Кирилл Спасибович... in Svelte [svelt]
each всё равно проедется по массиву объектов чтобы выставить класс после изменения и пофигу, проверит он наличие айдишки в сете, или поле в объекте
источник

КС

Кирилл Спасибович... in Svelte [svelt]
другое дело, что если с иммутабельностью, то он не будет проверять поля, а только ссылку объекта
источник

AS

Alexey Schebelev in Svelte [svelt]
на тормоза скорее скажется отрисовка DOMа и на памяти тоже. А то что он там по массиву бегает капля в море
источник

КС

Кирилл Спасибович... in Svelte [svelt]
Alexey Schebelev
на тормоза скорее скажется отрисовка DOMа и на памяти тоже. А то что он там по массиву бегает капля в море
да уж :) дом тот ещё тормоз, тут тоже убедился
но радует что в отличие от вдомовских фреймворков, количество объектов в массиве и соответственно нод в доме не так ужасно влияет на производительность
типа не нужно куда большую структуру сравнивать, только некоторые поля применяемые в шаблоне

это к слову об отображаемых допустим 1000 строках и клику на какую-нибудь галочку
источник

AS

Alexey Schebelev in Svelte [svelt]
ну еще главное что они не перерендриваются в основном - только изменившиеся части
источник

КС

Кирилл Спасибович... in Svelte [svelt]
короче можно юзать safe_not_equal и не парить мозг ?
источник