Выбор ответа Senior Производительность обновлено

Flutter: UI-поток и raster-поток

Вопрос

Performance overlay показывает красные столбики на графике raster, а UI зелёный. Где искать причину?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: В дорогой отрисовке: saveLayer, тени, большие изображения. UI-поток выполняет Dart: build, раскладку, запись команд отрисовки.

Варианты ответа

  1. В тяжёлых методах build и лишних перестроениях виджетов на каждом кадре
  2. В медленных сетевых запросах, которые блокируют поток растеризации
  3. В слишком большом количестве const-виджетов, которые растеризуются заново
  4. В дорогой отрисовке: saveLayer, тени, большие изображенияправильный ответ

Разбор

UI-поток выполняет Dart: build, раскладку, запись команд отрисовки. Raster-поток превращает эти команды в пиксели на GPU. Если не успевает raster, проблема в сложности картинки, а не в build. Сеть не занимает ни один из потоков, а const-виджеты только уменьшают работу.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.