Выбор ответа Senior Производительность обновлено
Flutter: UI-поток и raster-поток
Вопрос
Performance overlay показывает красные столбики на графике raster, а UI зелёный. Где искать причину?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: В дорогой отрисовке: saveLayer, тени, большие изображения. UI-поток выполняет Dart: build, раскладку, запись команд отрисовки.
Варианты ответа
- В тяжёлых методах
buildи лишних перестроениях виджетов на каждом кадре - В медленных сетевых запросах, которые блокируют поток растеризации
- В слишком большом количестве
const-виджетов, которые растеризуются заново - В дорогой отрисовке:
saveLayer, тени, большие изображенияправильный ответ
Разбор
UI-поток выполняет Dart: build, раскладку, запись команд отрисовки. Raster-поток превращает эти команды в пиксели на GPU. Если не успевает raster, проблема в сложности картинки, а не в build. Сеть не занимает ни один из потоков, а const-виджеты только уменьшают работу.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.