Разработка ждёт балета
1.67K subscribers
488 photos
3 videos
15 files
1.43K links
What I cannot create, I do not understand.

DM: @alexey_mileev
PeerLab: https://t.me/+e2ND1tAa0lU2ZTli
Download Telegram
В этой статье парень по имени Jeroen Mols рассказывает, как он вырезал лишние методы из используемых либ. Один из методов - найти и ручками вырезать лишние методы из гугловых либ (Guava, в его случае). Суть в том, что сначала при помощи ProGuard с подтюненным конфигом он оптимизирует библиотеку, а уже потом юзает ее как зависимость. Понятно, что тот же метод можно переложить и на другие гугловые высеры. Подробности найдешь по ссылке.

#dexlimit #proguard #optimize
http://jeroenmols.com/blog/2016/05/06/methodcount/
В видео по ссылке рассказывают, что нового в 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
Потрясающий сайт, на котором собраны разные проблемы, возникающие из-за всяких battery saver’ов, doze mode’ов и т.п. Там же есть какие-то советы для разработчиков.

#doze #battery #optimize
Вот тут очень здорово рассказывают, как работает оптимизация хвостовой рекурсии (tail call optimization / TCO). Surprise-surprise, она вполне хорошо применяется и к обычным функциям с вызовом функции и return в конце.

#compiler #optimize #recursion
Лучше поздно, чем никогда! Очень показательный пост про то, как чувак ускорял время загрузки GTA Online. Вот так, лёгким движением руки, неоптимально написанный код может на протяжении нескольких лет доставлять неудобства большому числу людей.

#gamedev #optimize #algorithm
В этом посте попытались разобраться, как именно телега ресайзит картинки перед отправкой. Что интересно, там нет ничего сильно хитрого, берёшь Bitmap, приправляешь Matrix, и вперёд.

#image #optimize
Хороший пост про четыре основных подхода к оптимизации и грабли, на которые в них можно наступить.

#optimize #performance
Прикольно, чел хотел написать бесконечный цикл, но только чтобы оптимизирующий компилятор этого не понял. Для этого он взял частный случай великой теоремы Ферма, и сильно удивился, когда некоторые компиляторы её «опровергли» и успешно цикл оптимизировали.

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

#performance #optimize
👍4
Тут собрали пачку распространённых заблуждений про оптимизирующие компиляторы. Всё про C/C++, конечно, но некоторые вещи перекладываются и на другие языке.

#compiler #optimize
Новая история из JS и NPM мира, но на этот раз вполне себе милая, без трэша. Автор рассказывает, как ему в голову пришла прекрасная идея сократить размер всех пакетов на ~5%, сохраняя обратную совместимость. Он довёл это всё до RFC и до обсуждений с мейнтейнерами NPM, после чего копнул глубже, детальнее разобрал трейдоффы, понял, что игра не стоит свеч и закрыл RFC.

#js #compression #optimize
👍5
Какое-то странное just for fun безумие. Показывают, как соптимизировать проверку на високосный год до ~3 CPU инструкций. У всех же была ситуация, когда надо очень эффективно и много таких проверок делать для годов от 0 и до 102499? Ну и job security, опять же.

#just4fun #optimize
😁13👍3🥴3
В Go действительно есть прикол, когда библиотечная функция принимает какой-то простой и привычный интерфейс, но внутри проверяет тип на какой-то более специфичный, ради оптимизации. Ну, за простоту нужно было где-то заплатить. Тут про это всё пишут подробнее.

#go #optimize #hack
Супер поучительная история. Чел работал над гигантской кодобазой на Java, заоптимизированной донельзя. Система работала на огромном кол-ве машин, поэтому каждый процентик экономии имел большой смысл. Наш протагонист нашёл пространство для ещё одной оптимизации: маршалинг long'ов в VarInt байты. Героически покоряя JIT и извергая ASM инструкции, он добился 4-х кратного ускорения этой небольшой функции. Раскатывает на прод - 0 эффекта. Копает, в чём дело, и, внезапно, facepalm. Никто особо не маршалит настолько больших чисел, чтобы оптимизация дала эффект. Мораль: не надо бенчмаркать на рандомных данных.

#optimize #java #benchmark
😢11😁3👏1