TGViewer
Compose Broadcast Compose Broadcast @compose_broadcast · 5.9K subscribers
Post #956 4.62K
⚙️ В Compose 1.12.0 появилась экспериментальная реализация Slot Table на основе связного списка (LinkBuffer).

Slot Table — это внутренняя структура данных, в которой Compose Runtime хранит всё дерево композиции: каждый Composable, каждое состояние remember, ключи и связи между элементами. С момента первого релиза Slot Table был реализован на основе Gap Buffer — структуры, вдохновлённой текстовыми редакторами.

Gap Buffer хранит все группы в плоском IntArray с пустой областью (gap), которая перемещается к месту следующей записи. Его проблема что при удалении или переупорядочивании элементов gap должен переместиться к нужной позиции, копируя все элементы на своём пути.

Для композиции с 1000 группами удаление группы №500 требует перемещения gap через 500 позиций. Переупорядочивание одного элемента в списке из 100 записей требует двух перемещений gap, каждое с копированием части массива. По итогу чем больше композиция, тем дороже структурные изменения.

Новая экспериментальная реализация Slot Table на основе связного списка — LinkBuffer. Вместо плоского массива группы хранятся в виде связного списка с явными указателями на родителя, первого потомка и следующего соседа. Ключевое преимущество - структурные операции (удаление, перемещение, переупорядочивание) теперь требуют обновления указателей вместо копирования массивов.

По тестам разработчиков переупорядочивание списков стало более чем в 2 раза быстрее. Большинство других операций стали примерно на 10% быстрее

Флаг новой реализации отключён по умолчанию. Включить можно двумя способами:
1. Программно (только для debug-сборок):
// ДО вызова setContent()
ComposeRuntimeFlags.isLinkBufferComposerEnabled = true

2. Через R8/ProGuard (для release-сборок):
-assumevalues public class androidx.compose.runtime.ComposeRuntimeFlags {
static boolean isLinkBufferComposerEnabled return true;
}

В R8 release-сборках правило ProGuard всегда имеет приоритет над программной установкой.

#Compose #UnderHood
More from @compose_broadcast
  1. Sep 17, 2026В Compose 1.13 появится полноценный Blur для контента через Modifier #Compose
  2. Sep 14, 2026⚙️ Вышел Compose HotSwan 2.0.0 - Hot Reload для Android, iOS и Desktop. В новой версии про…
  3. Sep 14, 2026⚙️ Compose Web можно выложить как офлайн-приложение В Issue CMP-10781 в официальном баг-тр…
  4. Sep 9, 2026🚀 Вышла новая альфа-версия адаптации CMP для ОС Аврора (v0.0.5) Прошёл квартал — а значит…
  5. Sep 7, 2026🐱 compose-recomposition-highlighter - отслеживание статистики рекомпозиций в Android След…
  6. Sep 7, 2026⚙️ Анимация смены чисел на Compose. Как сделали тут #Compose #Анимация
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →