В этой статье парень по имени Jeroen Mols рассказывает, как он вырезал лишние методы из используемых либ. Один из методов - найти и ручками вырезать лишние методы из гугловых либ (Guava, в его случае). Суть в том, что сначала при помощи ProGuard с подтюненным конфигом он оптимизирует библиотеку, а уже потом юзает ее как зависимость. Понятно, что тот же метод можно переложить и на другие гугловые высеры. Подробности найдешь по ссылке.
#dexlimit #proguard #optimize
http://jeroenmols.com/blog/2016/05/06/methodcount/
#dexlimit #proguard #optimize
http://jeroenmols.com/blog/2016/05/06/methodcount/
Jeroen Mols
Efficiently reducing your method count
As green field projects are a rare breed, chances are that you’ve inherited a legacy code base. If you’re as lucky as me, that code base has over 65k methods causing the build times to be boringly slow.
В видео по ссылке рассказывают, что нового в 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…
Потрясающий сайт, на котором собраны разные проблемы, возникающие из-за всяких battery saver’ов, doze mode’ов и т.п. Там же есть какие-то советы для разработчиков.
#doze #battery #optimize
#doze #battery #optimize
Вот тут очень здорово рассказывают, как работает оптимизация хвостовой рекурсии (tail call optimization / TCO). Surprise-surprise, она вполне хорошо применяется и к обычным функциям с вызовом функции и
#compiler #optimize #recursion
return
в конце.#compiler #optimize #recursion
eklitzke.org
How Tail Call Optimization Works
Лучше поздно, чем никогда! Очень показательный пост про то, как чувак ускорял время загрузки GTA Online. Вот так, лёгким движением руки, неоптимально написанный код может на протяжении нескольких лет доставлять неудобства большому числу людей.
#gamedev #optimize #algorithm
#gamedev #optimize #algorithm
meh.
How I cut GTA Online loading times by 70%
GTA Online. Infamous for its slow loading times. Having picked up the game again to finish some of the newer heists I was shocked (/s) to discover that it still loads just as slow as the day it was re
В этом посте попытались разобраться, как именно телега ресайзит картинки перед отправкой. Что интересно, там нет ничего сильно хитрого, берёшь
#image #optimize
Bitmap
, приправляешь Matrix
, и вперёд.#image #optimize
Хороший пост про четыре основных подхода к оптимизации и грабли, на которые в них можно наступить.
#optimize #performance
#optimize #performance
Прикольно, чел хотел написать бесконечный цикл, но только чтобы оптимизирующий компилятор этого не понял. Для этого он взял частный случай великой теоремы Ферма, и сильно удивился, когда некоторые компиляторы её «опровергли» и успешно цикл оптимизировали.
#compiler #c #optimize
#compiler #c #optimize
😁2
Любопытный трюк, который может сработать в ряде случаев для оптимизации некоторых функций: переход от if-else цепочки к table lookup.
#performance #optimize
#performance #optimize
👍4
Новая история из JS и NPM мира, но на этот раз вполне себе милая, без трэша. Автор рассказывает, как ему в голову пришла прекрасная идея сократить размер всех пакетов на ~5%, сохраняя обратную совместимость. Он довёл это всё до RFC и до обсуждений с мейнтейнерами NPM, после чего копнул глубже, детальнее разобрал трейдоффы, понял, что игра не стоит свеч и закрыл RFC.
#js #compression #optimize
#js #compression #optimize
Evanhahn
My failed attempt to shrink all npm packages by 5%
It seemed like a great idea at first.
👍5
Какое-то странное just for fun безумие. Показывают, как соптимизировать проверку на високосный год до ~3 CPU инструкций. У всех же была ситуация, когда надо очень эффективно и много таких проверок делать для годов от 0 и до 102499? Ну и job security, опять же.
#just4fun #optimize
#just4fun #optimize
😁13👍3🥴3
Супер поучительная история. Чел работал над гигантской кодобазой на Java, заоптимизированной донельзя. Система работала на огромном кол-ве машин, поэтому каждый процентик экономии имел большой смысл. Наш протагонист нашёл пространство для ещё одной оптимизации: маршалинг long'ов в VarInt байты. Героически покоряя JIT и извергая ASM инструкции, он добился 4-х кратного ускорения этой небольшой функции. Раскатывает на прод - 0 эффекта. Копает, в чём дело, и, внезапно, facepalm. Никто особо не маршалит настолько больших чисел, чтобы оптимизация дала эффект. Мораль: не надо бенчмаркать на рандомных данных.
#optimize #java #benchmark
#optimize #java #benchmark
😢11😁3👏1