Нашел гайд по оптимизации производительности процессора и недопущение его перегрева на основе Android Dynamic Performance Framework (ADPF)
🔗 Пример с использованием API
🔗 Codelab Integrating Adaptability Features Into Your Native Game
#performance
🔗 Пример с использованием API
🔗 Codelab Integrating Adaptability Features Into Your Native Game
#performance
👍28👎5
Что нового в Jetpack Benchmark 1.2.0 (7 мин, ссылка без VPN)
Baseline Profiles
👉 Baseline Profiles получили стабильный статус
👉 Android Studio Iguana (Canary статус) содерджит шаблон для генерации Baseline Profile модуля
👉 Gradle плагин для генерации Baseline Profile
👉 Возможность задания какие классы должны быть включены и нет в Baseline Profile
Macrobenchmark
👉 MethodTracing позволит какие методы были вызваны
👉 StackSampling покажет время которое происходит в вызове каждого метода
👉 Быстрая валидация с dryRun
👉 Поддержка Perfetto SDK Tracing
👉 Замер расхода заряда батареи
Microbenchmark
👉 Профилирование теперь запускается после сбора всех метрик
👉 Возможность настройки как собирать метрики
👉 Получение состояния бенчмарка без JUint API
👉 PerfettoTraceRule позволит подробнее анализировать производительность теста
#performance
Baseline Profiles
👉 Baseline Profiles получили стабильный статус
👉 Android Studio Iguana (Canary статус) содерджит шаблон для генерации Baseline Profile модуля
👉 Gradle плагин для генерации Baseline Profile
👉 Возможность задания какие классы должны быть включены и нет в Baseline Profile
Macrobenchmark
👉 MethodTracing позволит какие методы были вызваны
👉 StackSampling покажет время которое происходит в вызове каждого метода
👉 Быстрая валидация с dryRun
👉 Поддержка Perfetto SDK Tracing
👉 Замер расхода заряда батареи
Microbenchmark
👉 Профилирование теперь запускается после сбора всех метрик
👉 Возможность настройки как собирать метрики
👉 Получение состояния бенчмарка без JUint API
👉 PerfettoTraceRule позволит подробнее анализировать производительность теста
#performance
👍10👎7
В блоге Android Developers рассказали про оптимизацию порядка файлов для ускорения инициализации нативных библиотек
#performance #ndk
#performance #ndk
👍11👎8
Improve Your Android App Performance With Baseline Profiles (9 мин, EN, ссылка без VPN) - инструкция как создать Baseline Profile в вашем приложении для ускорения его работы, в особенности при первых запусках. Как раз свежая версия Android Studio стала поддерживать генерацию профиля через UI
#androidstudio #performance
#androidstudio #performance
👍11🤯7🙏2
Разработчик рассказывает (EN, 4 мин, ссылка без VPN) как ускоряли выполнение Unit тестов в Android приложение:
👉 Отключение Crashlytics для тестов
👉 Минимизация генерации кода или замена её рефлексией
#teting #performance
👉 Отключение Crashlytics для тестов
👉 Минимизация генерации кода или замена её рефлексией
#teting #performance
👍5
Инструкция (EN, 7 мин, ссылка без VPN) по автоматизации генерации Baseline Profile на CI. Нужно будет запускать эмулятор или подключенное устройство к CI, где запустить генерацию профиля
#performance #ci
#performance #ci
👍8
Разработчик из Booking делится зачем делали своё решение для замера производительности приложения во время работы. В статье (EN, 9 мин, ссылка без VPN) рассказывается какие метрики решили замерять и как, а именно: время запуска приложения, время до показа экрана, скорость рендеринга, время простоя
Исходный код для iOS и Android
#performance #analytics
Исходный код для iOS и Android
#performance #analytics
👍11
Forwarded from Kotlin Multiplatform Broadcast (Кирилл Розов)
Jake Wharton решил каппнуть в того как лучше делать маппинг набора значений в одну строку и какую лучше выбрать реализацию. Массивы с лямбдой инициализации значений будут довольно полезны
#performance
#performance
👍23
Forwarded from Kotlin Multiplatform Broadcast (Кирилл Розов)
Ну наконец-то кто-то это сделал❗ Показывают почему не стоит использовать активно mapOf(vararg pairs: Pair<K, V>) из-за создания промежуточных объектов. Подробности в статье (5 мин)
Недавно в Android завели новые типы - ScatterMap, которые могут помочь вам ускорить работу кода и снизить нагрузку на память
#performance
Недавно в Android завели новые типы - ScatterMap, которые могут помочь вам ускорить работу кода и снизить нагрузку на память
#performance
🔥31
Стартует интересный опыт - разработчик написал одно и тоже приложения 15 раз на разных стеках UIKit, SwiftUI, XML, Compose и Compose Multiplatform и меняя другие технологии.
🔗 Часть 1 (EN, 12 мин). Методология (Ссылка без VPN)
🔗 Часть 2 (EN, 21 мин). Результаты производительности (Ссылка без VPN)
🔗 Часть 3 (EN, 10 мин). Подведение итогов (Ссылка без VPN)
#performance @android_broadcast
🔗 Часть 1 (EN, 12 мин). Методология (Ссылка без VPN)
🔗 Часть 2 (EN, 21 мин). Результаты производительности (Ссылка без VPN)
🔗 Часть 3 (EN, 10 мин). Подведение итогов (Ссылка без VPN)
#performance @android_broadcast
🔥34👍13❤1
Forwarded from Compose Broadcast (Кирилл Розов)
Осознанная оптимизация Compose 2: В борьбе с композицией (15 мин)
В статье автор делится свежими находками и передовыми практиками в оптимизации Compose. Чтобы максимально углубиться в тему и почитать первую часть статьи
@compose_broadcast #performance
В статье автор делится свежими находками и передовыми практиками в оптимизации Compose. Чтобы максимально углубиться в тему и почитать первую часть статьи
@compose_broadcast #performance
🔥33❤1
Генерация Baseline Profile теперь стала проще - все можно сделать через новый визард (подробности тут)
#androidstudio #performance
#androidstudio #performance
🔥21👍2
На сайте Android Developers почитайте рекомендации про работе с SQLite:
👉 Конфигурация БД
👉 Эффективное объявление схемы БД
👉 Ускорение запросов в БД
👉 Инструменты для анализа
#sqlite #performance
👉 Конфигурация БД
👉 Эффективное объявление схемы БД
👉 Ускорение запросов в БД
👉 Инструменты для анализа
#sqlite #performance
👍14
Чтобы ускорить синхронизацию Gradle стоит правильно описать репозитории и за какими зависимостями туда ходить. Например, в google репо стоит ходить только за androidx и google.
Такие оптимизации позволили ускорить синк с 6 минут до 3+ ( ускорение на 40%). Подробности тут
Кстати, как вариант - поднять свой собственный Nexus репозиторий, который соберет все артефакты из других репозиториев. В проекте будет один репо строго
#gradle #performance
Такие оптимизации позволили ускорить синк с 6 минут до 3+ ( ускорение на 40%). Подробности тут
Кстати, как вариант - поднять свой собственный Nexus репозиторий, который соберет все артефакты из других репозиториев. В проекте будет один репо строго
#gradle #performance
❤65🔥18👍6
Application.onCreate() и запустите его на фоновом потоке. Профит на графике. Источник - блог @nek_12_personal#firebase #android #performance
Please open Telegram to view this post
VIEW IN TELEGRAM
❤36👍17🔥11🤔4
Команда Android Runtime (ART) опубликовала технический разбор оптимизаций, внедренных в 2025 году. Инженеры поставили амбициозную цель: сократить время компиляции, не жертвуя ни пиковым потреблением памяти, ни качеством генерируемого кода.
Самая хорошая новость — это не эксклюзив Android 16 (или будущих версий). Так как начиная с Android 12 компонент ART был выделен в Project Mainline, обновления прилетают через Google Play System Updates. Часть оптимизаций уже раскатана в июньском апдейте 2025 года, остальные придут до конца года.
Подробнее про работу этой системы у меня есть
Ускорение компиляции на устройстве влияет на два сценария:
👉 JIT (Just-in-Time): Приложение быстрее получает оптимизированный код, что снижает лаги и повышает отзывчивость UI.
👉 AOT (Ahead-of-Time): При установке или обновлении приложений устройство тратит меньше ресурсов CPU, что бережет заряд батареи и снижает нагрев.
🔗 Читать полный разбор в блоге Android Developers
#Android #ART #Performance #Mainline
Please open Telegram to view this post
VIEW IN TELEGRAM
👍47🔥29👎5❤1
⚡️ R8 наконец-то починил AtomicReferenceFieldUpdater в корутинах на Android
Это история про баг, которому больше двух лет. В 2023 году в трекере
Корень проблемы в том, что корутины используют atomicfu, который на JVM компилируется в Atomic*FieldUpdater ради совместимости с KMP. На десктопном JDK это нормально, но ART на Android оптимизирует их хуже. Бенчмарк на Pixel 4a давал 135 нс против 50 нс — разница почти в 3 раза на
R8 в составе AGP 9.2 закрывает этот разрыв на уровне компилятора: он определяет, где
Для нас это значит: никаких изменений в коде, просто обновить AGP. Бесплатное ускорение каждого launch и cancel в приложении.
На мой взгляд, абсолютно правильно решать проблему именно на стороне R8, а не правками всех библиотек.
🔗 Источник - X Andrei Shikov
#kotlin #coroutines #performance
Это история про баг, которому больше двух лет. В 2023 году в трекере
kotlinx.coroutines появился issue: AtomicReferenceFieldUpdater, которым корутины управляют состоянием Job, на Android работает в 2–4 раза медленнее, чем обычный AtomicReference на операциях compareAndSet и lazySet.Корень проблемы в том, что корутины используют atomicfu, который на JVM компилируется в Atomic*FieldUpdater ради совместимости с KMP. На десктопном JDK это нормально, но ART на Android оптимизирует их хуже. Бенчмарк на Pixel 4a давал 135 нс против 50 нс — разница почти в 3 раза на
compareAndSet.R8 в составе AGP 9.2 закрывает этот разрыв на уровне компилятора: он определяет, где
Atomic*FieldUpdater можно заменить на Unsafe-вызовы, и генерирует одну инструкцию вместо цепочки. ART тоже получит аналогичную оптимизацию в JIT, но она имеет ограничения по версии платформы и хуже масштабируется по тестам автора.Для нас это значит: никаких изменений в коде, просто обновить AGP. Бесплатное ускорение каждого launch и cancel в приложении.
На мой взгляд, абсолютно правильно решать проблему именно на стороне R8, а не правками всех библиотек.
🔗 Источник - X Andrei Shikov
#kotlin #coroutines #performance
👍57👎7
Google показала новый профайлер на I/O 2026. APA пришёл на смену Android GPU Inspector и сразу доступен в открытой бете. Поставляется в двух вариантах: лёгкое standalone-приложение под Windows, macOS и Linux, и встроенный System Trace viewer в Android Studio в канареечных сборках Panda 4 и новее.
В этом релизе доступен System Profiler. Он показывает CPU, GPU, память и энергопотребление приложения в одном окне.
Под капотом Perfetto для системного трейсинга, можно открывать и существующие Perfetto-трейсы. GPU-счётчики читаются с железа Qualcomm, Arm, Imagination и Samsung (про Tensor ничего), есть события SurfaceFlinger по конвейеру рендера, треки FPS и времени кадра. Из рабочих мелочей появились вкладки и сплит окна для сравнения трейсов, проектная модель для A/B-тестов и скриншоты для навигации по таймлайну.
🧠 APA анализирует трейсы через SQL-запросы и идёт с Perfetto SQL skill для ИИ-агентов, так что запрос строится без знания схемы Perfetto. Perfetto Analysis отвечает на высокоуровневые вопросы вроде «почему медленно стартует приложение».
По заявлениям разработчиков рендеринг трейса в APA в 6–26 раз быстрее, чем в Android GPU Inspector, и стабильнее на больших данных. Лучший опыт по системным метрикам и GPU-счётчикам — на устройствах с Android 12 и выше.
Меня радует здесь формат, а не сам профайлер. Standalone-инструмент, который ставится за минуту и не тянет за собой тяжёлую IDE, это правильное направление. Android GPU Inspector тоже был отдельным приложением, так что путь не новый, но APA впервые собрал в standalone не только графику, а ещё CPU, память и энергопотребление. Очень жду когда начнется распил инструментов из Android Studio.
#Android #AndroidDev #Производительность #Performance #AndroidStudio
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74👎2❤1🔥1
Keep rules из сторонних библиотек часто написаны с запасом: разработчик библиотеки не знает, как именно вы её используете, и кладёт широкое
-keep class com.library.** { *; }. R8 видит это и выключает оптимизацию для всего пакета, даже если вашему приложению нужны оттуда три класса. AGP 9.3.0-alpha05 добавил инструмент, который это наконец показывает с цифрами.Configuration Analyzer генерирует HTML-отчёт, в котором по каждому keep rule и по каждой библиотеке видны три метрики:
👉 Shrinking score - процент кода, доступного для удаления неиспользуемых классов и методов
👉 Optimization score - процент кода, доступного для инлайнинга, мёрджинга классов и прочих R8-оптимизаций
👉 Obfuscation score - процент кода, доступного для обфускации имён
Начиная с AGP 9.3.0-alpha05 отчёт генерируется автоматически в build/outputs/mapping/release/configanalyzer.html при каждом билде с квлюченной минификацией. Для AGP 9.2 и ниже нужно при запуске
./gradlew assembleRelease передать системный флаг com.android.tools.r8.dumpkeepradiushtmltodirectory с путём до папки куда сохранить отчет.Помимо широких правил анализатор выделяет ещё два типа мусора:
👉 unused rules, которые не матчат ни один класс в текущем билде (обычно появляются после рефакторинга)
👉 subsumed rules, когда одно широкое правило перекрывает другое и делает его бессмысленным.
‼️ ВАЖНО: требует R8 9.3.7-dev, который идёт в комплекте только с AGP 9.3.0-alpha05. Это ранняя alpha. На продакшн-сборки без тщательной проверки не стоит.
Это первый инструмент с конкретными цифрами по влиянию сторонних библиотек на R8. Раньше это была область догадок и ручного анализа mapping-файлов. Теперь можно прийти к мейнтейнеру с отчётом и показать: вот твоё правило, вот 35% заблокированной оптимизации у нас в проекте. Круто если такой отчет можно будет получить как XML/JSON чтобы встраивать в другие инструменты.
#Android #AndroidDev #R8 #Performance #agp #Произодвительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍46👎3❤1
📃 Сравнение скорости работы Metro DI vs Dagger/Hilt в Android проекте.
У меня по рабочей задаче встал вопрос какой DI выбрать для трансформации Android проекта в KMP с поддержка Android, iOS, Desktop и конечно нормальной работой с Compose. Решил понять чего будет стоить миграции на Metro DI и был приятно удивлен.
За день с помощью AI перевел Now In Android на Metro и запустил различные тесты сравнения влияния DI на сборку проекта. Подробности в🪙 полной статье на Boosty
#Dagger #Metro #KMP #Performance
У меня по рабочей задаче встал вопрос какой DI выбрать для трансформации Android проекта в KMP с поддержка Android, iOS, Desktop и конечно нормальной работой с Compose. Решил понять чего будет стоить миграции на Metro DI и был приятно удивлен.
За день с помощью AI перевел Now In Android на Metro и запустил различные тесты сравнения влияния DI на сборку проекта. Подробности в
#Dagger #Metro #KMP #Performance
Please open Telegram to view this post
VIEW IN TELEGRAM
5👎33👍11❤4🔥2