Пишу сервис для общения: оптимизация
На днях решил проверить как приложение будет работать на iPhone 16 и древненьком Huawei P30 Lite. На айфоне более-менее, проблем с производительностью замечено не было (в релизной/продакшен сборке). А вот Huawei P30 Lite начал агитировать в пользу проведения основательной (ну или хотябы какой-то) работы по оптимизации приложения.
Подзабросил оптимизацию, в основном перерисовывал интерфейс методом "перерисуй вообще все сейчас". На мобильных устройствах отрисовка так не работает 😂
В Total Reload занимался программной частью и оптимизация по рендеру сводилась к GPU Instancing, Dynamic/Static Batching, LOD (моделе и шейдеры), render pipeline, настройка количества пост-эффектов и их группировка в одном шейдере. Это основные моменты по оптимизации. В итоге частота кадров 30-60 fps в зависимости от видеокарты:
В flutter не обнаружил почти ничего из того, что использовал в игровой разработке. Во всяком случае из всего вышеперечисленного "напрямую" ничего не использовал. Потому в первое время делал setState() (обновление состояния/внешнего вида виджета на экране) максимально часто. В итоге получил довольно тормознутый интерфейс.
Мощнейшая оптимизация
1) setState теперь стараюсь не вызывать, пытаюсь всюду использовать notifier.
2) обновляю только то, что нужно обновить.
Пожалуй, это вся оптимизация. Этого хватило чтобы интерфейс окна переписки стал отзывчивым. Пришлось немного 😂 переписать код, но с кем не бывает.
Сегодня добавил кнопку промотки истории переписки к самому началу:
Кнопка исчезает/появляется в нужный момент. Промотку можно остановить, если каснуться экрана в процессе промотки. Но это все из области "само собой разумеющееся".
Уже не первый раз спрашивают когда выложу в публичный доступ. Затрудняюсь сказать. Работаю, результаты видите. Можете по постам предположить дату выпуска первой версии 😅 Не могу озвучивать точные сроки тк могу их нарушить.
Еще иногда спрашивают примерно такие вопросы:
Мне неважно сколько человек им будет пользоваться. На данный момент делаю проект для себя, друзей и подписчиков. Не думаю, что оно как-то коммерциализируется, тем более само собой. В любом случае в этом году у меня совершенно нет времени заниматься раскруткой сервиса для общения. А вот работу забрасывать не буду. Скажу больше, во что бы то ни стало в свободные вечера буду заниматься доработкой и улучшением сервиса до выпуска, а после выпуска его поддержкой :)
Продолжаю работу над контекстым меню и взаимодействием с сервером :)
--
По вечерам разрабатываю сервис для общения на Go & Flutter. Кому интересно, можете подписаться куда-нибудь на меня, попробуете его в числе первых. Постепенно буду продолжать делиться успехами разработки сервиса.



Вопросы типа проиллюстрированного могут возникать только у того, кто не знает, что эта работа делается "в одну каску" и, хотя имеет амбициозные планы "заменить собой все мессенджеры мира", всё же в достижимых целях обозначена как "разобраться для себя, как мог бы быть сделан идеальный мессенджер" (опять же, это - тоже личное мнение).
Кстати, про "одну каску" - проект развивается уже немало времени, не подтянулись ли единомышленники и желающие помочь кодированием?