Разработка ждёт балета
1.66K subscribers
509 photos
4 videos
15 files
1.54K links
What I cannot create, I do not understand.

DM: @alexey_mileev
PeerLab: https://xn--r1a.website/+e2ND1tAa0lU2ZTli
Download Telegram
Какое-то время назад посмотрел этот доклад от Oleksandr Tolstykh про тюнинг производительности RecyclerView и надёргал интересных слайдов. А-ля шпаргалка. Сейчас наткнулся на это безобразие в заметках и решил собрать вместе в виде мини поста. Многое из этого наверное баян, но вдруг ты не видел. Доклад, кстати, очень хорош. Советую посмотреть.

#talk #recycler #performance
http://telegra.ph/RecyclerView-Performance-Tuning-by-Oleksandr-Tolstykh-10-13
https://youtu.be/QjFa5dEzh28
Ребята из Uber показали свой доморощенный method tracing tool. И вот знаете, с одной стороны, богатая идея, а с другой, немножко пугает: они решили измерять с уровня системы, т.е. их тул это форк AOSP, который умеет бенчмаркать. Такие дела.

#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
Просто интересная находка: статья от Romain Guy из ранних времён Android про некоторые оптимизации рисования background’ов.

#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
Сказ о том, как улучшить переиспользование OkHttp соединений, добавив реализацию .equals в SSLSocketFactory, и заодно переиспользуя их инстансы.
 
#okhttp #network #performance
Небольшой гайд по профайлингу main thread событий через Perfetto. Я про этот Perfetto только на прошлой неделе услышал, до этого не встречался и ещё потыкать не успел, но, глядя на положение дел в Studio, чую, там может быть лучше.

#profiler #performance
Два прямо неплохих поста из Lyft о том, как следить за потреблением CPU и памяти прямо в проде.

#performance #cpu #memory
👍11🤮1
На Android Developers появился набор советов о том, как ускорить работу с SQLite. Выглядит здорово! Жаль, что его там не было раньше.

#sqlite #db #performance
👍7🔥1🥱1
Хороший пост про четыре основных подхода к оптимизации и грабли, на которые в них можно наступить.

#optimize #performance
В Go поработали над трэйсингом:
- Меньше оверхед. Сильно меньше
- Трэйс теперь можно разбивать на куски
- За счёт разбития трэйса на куски, теперь вполне можно flight record'ить наживую
- Ну и API, чтобы парсить трэйсы чуть более удобно
Ну кайф!

#go #performance #trace
👍1🔥1
Помните подход, который Кармак описывал, когда в коде ставится assert на размер коллекции, чтобы при изменении внешних условий можно было обнаружить старое предположение и перепроверить алгоритм на адекватность в новой ситуации? Тут вот та же по сути идея, только в более глобальном контексте: Always set a limit to the size of the entities your product consumes.

#programming #performance
👍2
Любопытный трюк, который может сработать в ряде случаев для оптимизации некоторых функций: переход от if-else цепочки к table lookup.

#performance #optimize
👍4
Тут опять нытьё про невероятно мощное современное железо и программы, которые хреново на этом железе работают. Но поинт скорее в том, что сделать хорошо или плохо можно и нативно, и на веб-технологиях, просто почти никто не заморачивается.

#performance #js #native
👍5
Тут чел убеждает, что, ресурсы конечны, и, возможно, грядут тяжёлые времена, к которым нам всем стоит быть готовыми. Дорогое электричество, дорогой хардвер, разные неприятные требования от правительств и всё в таком духе.

#programming #resources #performance
👍2😁2
Тут в Go соптимизировали мапу, чтобы было быстрее и прикольнее. В посте сначала описывают, за счёт чего оно получилось (вкратце - Swiss Tables - нашли возможность улучшить за счёт параллельных SIMD инструкций и хитрой конструкции), а потом рассказывают, какие сложности были с реализацией этого конкретно в Go (каждая мапа - это на самом деле много мап). Интересно показывает практический подход языка - растим структуру понемногу. А ещё интересно решают проблемы с модификацией мапы во время итерации.

#go #performance #datastructure
Тут вот пересказывают доклад чувака, знающего толк в производительности Python.

Основной посыл: прямо хорошо ускорить язык просто невозможно, т.к. спецификация позволяет слишком многое, хоть этим всем подавляющее большинство разработчиков и не пользуется в непосредственно своём коде. А урезать спеку тоже нельзя - ломается совместимость.

Этот же чувак, к слову, пилит крайне экспериментальный Static Python (SPy), который на небольших демках уже показывает гораздо более приятную скорость.

#python #language #performance
😁2👍1