Какое-то время назад посмотрел этот доклад от Oleksandr Tolstykh про тюнинг производительности RecyclerView и надёргал интересных слайдов. А-ля шпаргалка. Сейчас наткнулся на это безобразие в заметках и решил собрать вместе в виде мини поста. Многое из этого наверное баян, но вдруг ты не видел. Доклад, кстати, очень хорош. Советую посмотреть.
#talk #recycler #performance
http://telegra.ph/RecyclerView-Performance-Tuning-by-Oleksandr-Tolstykh-10-13
https://youtu.be/QjFa5dEzh28
#talk #recycler #performance
http://telegra.ph/RecyclerView-Performance-Tuning-by-Oleksandr-Tolstykh-10-13
https://youtu.be/QjFa5dEzh28
Telegraph
RecyclerView Performance Tuning by Oleksandr Tolstykh
Video: https://youtu.be/QjFa5dEzh28
Ребята из Uber показали свой доморощенный method tracing tool. И вот знаете, с одной стороны, богатая идея, а с другой, немножко пугает: они решили измерять с уровня системы, т.е. их тул это форк AOSP, который умеет бенчмаркать. Такие дела.
#performance #benchmarks #methodtracing
https://eng.uber.com/nanoscope
#performance #benchmarks #methodtracing
https://eng.uber.com/nanoscope
В видео по ссылке рассказывают, что нового в ART в Android P:
1. Оптимизации компилятора для Kotlin (например, inline null-checks для non-null параметров)
2. CompactDex - штука, которая почикает Dex-файлы прямо на девайсе. Умеет: deduplicate and shrink code items, deduplicate multidex data, incorporate profile based Dex layout optimization (сложить методы, которые дёргаются часто или на старте в одно место в памяти)
3. На Nougat появились code profiles - во время выполнения аппа проверяется, какой код и когда выполняется и применяются соответствующие оптимизации. На Android P пошли дальше: появляется cloud profiles - данные о выполнении вашего кода загружаются в облако и оттуда прилетают другим юзерам. То есть если на Nougat чем чаще апп использовался, тем лучше работал, то на Android P ребята из Google хотят добиться оптимальной производительности сразу после установки, как раз благодаря cloud profiles. А теперь гениальная идея из их доклада: берём 1%-2% юзеров из alpha и beta каналов, они используют апп, а потом на всех юзеров уже раскатывается апп, для которого собраны все profiles и апп сразу работает оптимально. Любо!
#kotlin #art #performance #optimize
https://youtu.be/Yi9-BqUxsno
1. Оптимизации компилятора для Kotlin (например, inline null-checks для non-null параметров)
2. CompactDex - штука, которая почикает Dex-файлы прямо на девайсе. Умеет: deduplicate and shrink code items, deduplicate multidex data, incorporate profile based Dex layout optimization (сложить методы, которые дёргаются часто или на старте в одно место в памяти)
3. На Nougat появились code profiles - во время выполнения аппа проверяется, какой код и когда выполняется и применяются соответствующие оптимизации. На Android P пошли дальше: появляется cloud profiles - данные о выполнении вашего кода загружаются в облако и оттуда прилетают другим юзерам. То есть если на Nougat чем чаще апп использовался, тем лучше работал, то на Android P ребята из Google хотят добиться оптимальной производительности сразу после установки, как раз благодаря cloud profiles. А теперь гениальная идея из их доклада: берём 1%-2% юзеров из alpha и beta каналов, они используют апп, а потом на всех юзеров уже раскатывается апп, для которого собраны все profiles и апп сразу работает оптимально. Любо!
#kotlin #art #performance #optimize
https://youtu.be/Yi9-BqUxsno
YouTube
What's new in Android Runtime (Google I/O '18)
If you use the Java or Kotlin programming languages to develop on Android, Android Runtime (ART) is what ensures your code runs quickly and efficiently. Learn more about how ART makes it easier to write a great Android app with improvements in debugging and…
Просто интересная находка: статья от Romain Guy из ранних времён Android про некоторые оптимизации рисования background’ов.
#view #performance
http://www.curious-creature.com/2009/03/04/speed-up-your-android-ui/
#view #performance
http://www.curious-creature.com/2009/03/04/speed-up-your-android-ui/
Мда… Давненько я сюда ничего не писал. Извиняюсь, в последнее время всё как-то кувырком, совсем не было времени.
Сегодня будет статья с хорошим разбором priority buckets в Android P. Суть в том, что теперь приложения получают разные возможности (на Jobs, Alarms, FCM уведомления и на доступ в сеть) в зависимости от паттерна их использования (запущен ли апп, foreground сервисы, sync adapter и т.п. и как часто пользователь приложение запускает). А подробности, как и всегда, найдёшь по ссылке.
#androidp #battery #performance
https://medium.com/google-developer-experts/exploring-android-p-priority-buckets-d34d12059d36
Сегодня будет статья с хорошим разбором priority buckets в Android P. Суть в том, что теперь приложения получают разные возможности (на Jobs, Alarms, FCM уведомления и на доступ в сеть) в зависимости от паттерна их использования (запущен ли апп, foreground сервисы, sync adapter и т.п. и как часто пользователь приложение запускает). А подробности, как и всегда, найдёшь по ссылке.
#androidp #battery #performance
https://medium.com/google-developer-experts/exploring-android-p-priority-buckets-d34d12059d36
Medium
Exploring Android P: Priority Buckets
At Google I/O there were a lot of new announcements around the latest version of Android, P. One of these announcements were Priority…
Достаточно объёмное интервью с Сергеем Куксенко. В основном обуждают производительность, ошибки Java, оптимизации и т.п.
#java #performance #jdk
#java #performance #jdk
Habr
Тысячи вещей, которые в Java стоило бы поправить с первой версии: большое интервью с Сергеем Куксенко из Oracle
Сергей Куксенко — перформанс-инженер, видевший Java еще версии 1.0. За это время успел поучаствовать в разработке мобильных, клиентских, серверных приложений и виртуальных машин. Производительностью...
Сказ о том, как улучшить переиспользование OkHttp соединений, добавив реализацию
#okhttp #network #performance
.equals в SSLSocketFactory, и заодно переиспользуя их инстансы. #okhttp #network #performance
Medium
Maximizing OkHttp connection reuse
debugging a 3rd party library
Небольшой гайд по профайлингу main thread событий через Perfetto. Я про этот Perfetto только на прошлой неделе услышал, до этого не встречался и ещё потыкать не успел, но, глядя на положение дел в Studio, чую, там может быть лучше.
#profiler #performance
#profiler #performance
Два прямо неплохих поста из Lyft о том, как следить за потреблением CPU и памяти прямо в проде.
#performance #cpu #memory
#performance #cpu #memory
Medium
Monitoring CPU performance of Lyft’s Android applications
Mobile performance at Lyft
👍11🤮1
На Android Developers появился набор советов о том, как ускорить работу с SQLite. Выглядит здорово! Жаль, что его там не было раньше.
#sqlite #db #performance
#sqlite #db #performance
👍7🔥1🥱1
Хороший пост про четыре основных подхода к оптимизации и грабли, на которые в них можно наступить.
#optimize #performance
#optimize #performance
В Go поработали над трэйсингом:
- Меньше оверхед. Сильно меньше
- Трэйс теперь можно разбивать на куски
- За счёт разбития трэйса на куски, теперь вполне можно flight record'ить наживую
- Ну и API, чтобы парсить трэйсы чуть более удобно
Ну кайф!
#go #performance #trace
- Меньше оверхед. Сильно меньше
- Трэйс теперь можно разбивать на куски
- За счёт разбития трэйса на куски, теперь вполне можно flight record'ить наживую
- Ну и API, чтобы парсить трэйсы чуть более удобно
Ну кайф!
#go #performance #trace
👍1🔥1
Помните подход, который Кармак описывал, когда в коде ставится assert на размер коллекции, чтобы при изменении внешних условий можно было обнаружить старое предположение и перепроверить алгоритм на адекватность в новой ситуации? Тут вот та же по сути идея, только в более глобальном контексте: Always set a limit to the size of the entities your product consumes.
#programming #performance
#programming #performance
👍2
Любопытный трюк, который может сработать в ряде случаев для оптимизации некоторых функций: переход от if-else цепочки к table lookup.
#performance #optimize
#performance #optimize
👍4
Тут опять нытьё про невероятно мощное современное железо и программы, которые хреново на этом железе работают. Но поинт скорее в том, что сделать хорошо или плохо можно и нативно, и на веб-технологиях, просто почти никто не заморачивается.
#performance #js #native
#performance #js #native
👍5
Тут чел убеждает, что, ресурсы конечны, и, возможно, грядут тяжёлые времена, к которым нам всем стоит быть готовыми. Дорогое электричество, дорогой хардвер, разные неприятные требования от правительств и всё в таком духе.
#programming #resources #performance
#programming #resources #performance
👍2😁2
Тут в Go соптимизировали мапу, чтобы было быстрее и прикольнее. В посте сначала описывают, за счёт чего оно получилось (вкратце - Swiss Tables - нашли возможность улучшить за счёт параллельных SIMD инструкций и хитрой конструкции), а потом рассказывают, какие сложности были с реализацией этого конкретно в Go (каждая мапа - это на самом деле много мап). Интересно показывает практический подход языка - растим структуру понемногу. А ещё интересно решают проблемы с модификацией мапы во время итерации.
#go #performance #datastructure
#go #performance #datastructure
go.dev
Faster Go maps with Swiss Tables - The Go Programming Language
Go 1.24 improves map performance with a brand new map implementation
Тут вот пересказывают доклад чувака, знающего толк в производительности Python.
Основной посыл: прямо хорошо ускорить язык просто невозможно, т.к. спецификация позволяет слишком многое, хоть этим всем подавляющее большинство разработчиков и не пользуется в непосредственно своём коде. А урезать спеку тоже нельзя - ломается совместимость.
Этот же чувак, к слову, пилит крайне экспериментальный Static Python (SPy), который на небольших демках уже показывает гораздо более приятную скорость.
#python #language #performance
Основной посыл: прямо хорошо ускорить язык просто невозможно, т.к. спецификация позволяет слишком многое, хоть этим всем подавляющее большинство разработчиков и не пользуется в непосредственно своём коде. А урезать спеку тоже нельзя - ломается совместимость.
Этот же чувак, к слову, пилит крайне экспериментальный Static Python (SPy), который на небольших демках уже показывает гораздо более приятную скорость.
#python #language #performance
LWN.net
Python performance myths and fairy tales
Antonio Cuni, who is a longtime Python performance engineer and PyPy developer, gave a presenta [...]
😁2👍1