Size: a a a

Android Architecture

2020 July 29

AC

Arsen CeH9 in Android Architecture
Arsen CeH9
диффы полей, а не стейта целиком
я уже отметил это
источник

I

Igor in Android Architecture
Arsen CeH9
а если не разные, то == пойдет проверять дальше по имплементации equals, а реф чек сразу вынесет вердикт, что одинаковые и будет прав

например у тебя 20 стринговых полей, === увидит одинаковую ссылку и сразу вернет тру, а == проверит все 20
== для одинаковых ссылок сразу вернет true
зато не будет ложных срабатываний, когда контент не поменялся
источник

AC

Arsen CeH9 in Android Architecture
data class MyState(
   val text: String,
   val text2: String,
   val text3: String
)
источник

AC

Arsen CeH9 in Android Architecture
источник

AC

Arsen CeH9 in Android Architecture
только класс должен был называться PartOfMyState а не весь стейт, чтобы соответствовать примеру
источник

AC

Arsen CeH9 in Android Architecture
но это не важно
источник

AC

Arsen CeH9 in Android Architecture
возможно сам "символ" == компилится во что-то кроме иквалс, нужно првоерить
источник

QH

Quantum Harmonizer in Android Architecture
Arsen CeH9
возможно сам "символ" == компилится во что-то кроме иквалс, нужно првоерить
иногда null-check + equals
источник

AC

Arsen CeH9 in Android Architecture
иногда?
источник

AC

Arsen CeH9 in Android Architecture
про примитивы наверно
источник

QH

Quantum Harmonizer in Android Architecture
Arsen CeH9
иногда?
когда известно, что оба типа non-null, тогда проверять нечего и сразу equals
источник

AC

Arsen CeH9 in Android Architecture
источник

AC

Arsen CeH9 in Android Architecture
источник

AC

Arsen CeH9 in Android Architecture
последний скрин сразу задекомпайленый
источник

I

Igor in Android Architecture
Arsen CeH9
только класс должен был называться PartOfMyState а не весь стейт, чтобы соответствовать примеру
1) весь стейт, только если все поля равны, иначе остановится на первом (тк && ленивый)
2) если в data класса поменял только одно поле, то остальные будут быстро сравниваться по ссылке
3) сравнение стрингов интрисифицировано и достаточно быстрое
4) зато НЕ будет ложны срабатываний, из-за которых будет ненужная перерисовка UI

вообще я бы не советовал никому таким заниматься, без серьезного подхода с профилированием
источник

I

Igor in Android Architecture
Arsen CeH9
Ты если серьезно к этому подходишь, то должен смотреть ассемблере который JIT генерит после оптимизаций,
а не это вот все. Ну и настоящим профилированием заниматься.
источник

AC

Arsen CeH9 in Android Architecture
чет не вяжется картина, если ссылки равны, то он обязан проверить все поля
источник

QH

Quantum Harmonizer in Android Architecture
Igor
Ты если серьезно к этому подходишь, то должен смотреть ассемблере который JIT генерит после оптимизаций,
а не это вот все. Ну и настоящим профилированием заниматься.
не забудь про холодный старт
источник

QH

Quantum Harmonizer in Android Architecture
Arsen CeH9
чет не вяжется картина, если ссылки равны, то он обязан проверить все поля
наоборот
источник

AC

Arsen CeH9 in Android Architecture
а все, там же val
источник