?

Log in

No account? Create an account
   Journal    Friends    Archive    Profile    Memories
 

Программирование, очерк об утилитах и их разработке, в историческом разрезе - morfizm


Oct. 21st, 2017 05:57 am Программирование, очерк об утилитах и их разработке, в историческом разрезе57 comments - Leave a commentPrevious Entry Share Next Entry

Comments:

From:andreyvo
Date:October 21st, 2017 08:59 pm (UTC)
(Link)
Proguard для уменьшения бинарника. Коцает лишние классы, методы, переменные, мертвый код, уцелевшее инлайнит, мерджит классы, обфускирует в односимвольные айдишники.
From:morfizm
Date:October 21st, 2017 10:23 pm (UTC)
(Link)
Спасибо, попробую его. Впрочем, я полазил по форумам, и там говорят, что серьёзное улучшение startup time (в контексте мелких утилит) возможно только если реюзать JVM. Это неплохая идея. Типа клиент-серверный дизайн, клиент это легковесная хрень на C++, которая стартует java процесс и подключается к нему, отправляя аргументы и зачитывая output. Надо только с security как-то решить вопрос.
From:archaicos
Date:October 21st, 2017 10:38 pm (UTC)
(Link)
Он иногда отрезает нужное, и всё падает при запуске. Странно как-то.
From:andreyvo
Date:October 21st, 2017 11:16 pm (UTC)
(Link)
Это оччень хорошо, если упало сразу. "Лицом в салллллат" - смачно так с оттягом говаривал один мой коллега, матерый сиплюсплюшник. Хуже если какоенить вялое липкое дерьмецо с undefined behavior, было у меня такое на китайских Mediatek процах с Андроид 6.0 и только с 6.0, на 6.0.1 уже поправили. Но какой китайский OEM пачит свои телефоны, они ж новые выпускают, на старые им болт забить через 2 недели после выпуска.
From:archaicos
Date:October 22nd, 2017 12:04 am (UTC)
(Link)
Ровно то же самое хотел сказать про UB. Мне думалось, что в мире любителей жабы его или нет, или нет и близко в количествах Ц++. Но нет, стырили даже гуано!
From:andreyvo
Date:October 22nd, 2017 02:05 am (UTC)
(Link)
Это не совсем UB в Java, это UB в имплементации ART на MTK, в результате которой байт-код некорректно исполнялся.

for (int idx = 0; idx < data.length;) {
data[idx++] = r;
data[idx++] = g;
data[idx++] = b;
}
Вот в этом коде на медиатеке случался ArrayIndexOutOfBoundsException, и только после того, когда его proguard обработает. Оптимизнутый proguardом Smali код выглядел ок, но этот чертов китайский процессор тупо проскакивал условие for'a
From:archaicos
Date:October 22nd, 2017 06:48 am (UTC)
(Link)
Я повидал багов в компиляторах и процессорах. Нормальное явление. Хоть и стрёмное.