Size: a a a

2020 September 15

КС

Кирилл Спасибович... in Svelte [svelt]
Oleg N
ну если в большом объекте в шаблон выводится только одно поле {big.object.user.name}, только только одно поле и проверять, а не весь объект.
сдений компьютер способен делать ~15 млн проверок в сек, если у тебя в виджете 100 простых биндингов, то их проверка займет 0.000007 сек (плюс/минус)
ну вроде свелт так и делает, разве нет?
просто он будет сравнивать все присутствующие в шаблоне поля объектов с контекстом, а также все использованные из объекта поля в реактивных выражениях
ну и для всех объектов, когда изменился один
источник

КС

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

ON

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

КС

Кирилл Спасибович... in Svelte [svelt]
Oleg N
он проверяет только те объекты у которых было присвоение =, поэтому мутаьельность типа arr.push не ловится
а если написать arr[3].field = 3, он проверит только этот объект по индексу 3, или весь массив ?
источник

ON

Oleg N in Svelte [svelt]
Кирилл Спасибович
а если написать arr[3].field = 3, он проверит только этот объект по индексу 3, или весь массив ?
весь массив
источник

КС

Кирилл Спасибович... in Svelte [svelt]
Oleg N
весь массив
а малина как это делает ?
источник

ON

Oleg N in Svelte [svelt]
свелту даже имуиабельность не нужна - это прикрытие. он смотреит только на присвоение
источник

ON

Oleg N in Svelte [svelt]
Кирилл Спасибович
а малина как это делает ?
проверяет биндинги
источник

ON

Oleg N in Svelte [svelt]
Кирилл Спасибович
а малина как это делает ?
источник

КС

Кирилл Спасибович... in Svelte [svelt]
Oleg N
свелту даже имуиабельность не нужна - это прикрытие. он смотреит только на присвоение
ну иммутабельность позволяет скипнуть проверку полей в объектах которые не изменились
и не триггерить два раза при двойном биндинге массива реактивные штуки
так что иногда она может помочь
источник

ON

Oleg N in Svelte [svelt]
Кирилл Спасибович
ну иммутабельность позволяет скипнуть проверку полей в объектах которые не изменились
и не триггерить два раза при двойном биндинге массива реактивные штуки
так что иногда она может помочь
да, позволяет сэкономить лишние 0.000007 сек
хотя основные потери на DOM
источник

ON

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

ON

Oleg N in Svelte [svelt]
Oleg N
но теряет на имутабельности - клонирование массивов и т.п.
но это все фигня, важнее что разработка усложняется или становится менее комфортной, т.к. это нужно учитывать что мутаьельность не всегда ловится
источник

ON

Oleg N in Svelte [svelt]
т.е. я размениваю часть производительности на удобство, хотя по тестам малина мыбтрее свелта
источник

КС

Кирилл Спасибович... in Svelte [svelt]
а что происходит когда у какого-нибудь объекта есть метод push но он не массив ?
источник

ON

Oleg N in Svelte [svelt]
Кирилл Спасибович
а что происходит когда у какого-нибудь объекта есть метод push но он не массив ?
не важно, если биндинги не изенились, то DOM не меняется
источник

ON

Oleg N in Svelte [svelt]
Кирилл Спасибович
а что происходит когда у какого-нибудь объекта есть метод push но он не массив ?
любой js код в виджете может изменить стейт, поэтому проверка происходит отложенно, почти после любого js кода, это дешево и ловит все мутации
источник

AS

Alexey Schebelev in Svelte [svelt]
@lega00  Т.е. упрщенно это примерно так?
1. Свелт на каждом тике для каждого вхождения поля объекта в шаблоне, проверяет в if что объект инвалидирован(было присваивание чего либо в объекте) и что значение поля не равно предыдущему.
2. Малина на каждом тике просто проверяет, что значение поля объекта, которое встречается в шаблоне, не равно предыдущему значению?
источник

КС

Кирилл Спасибович... in Svelte [svelt]
а вот интересно, что в итоге производительнее :)
источник

КС

Кирилл Спасибович... in Svelte [svelt]
хотя если на каждом тике проверять все значения всех данных с ctx'ом или аналогом то это дороже чем только когда объект присвоили
источник