по kt компилятору и билд тулзам
kotl.in/issue
спасибо, обращусь туда
Александр, может есть к кому обратиться по моей проблеме? чтобы найти какое-то решение. Тикет в issues - выглядит как "крик в пустоту"
Если задача ускорить конкретно ваш билд, то тикет - это самое оно место. Если это абстрактное "почему у вас не параллельно" - это именно что крик в пустоту. Сборка разных модулей совершенно точно параллельна, вам выше показывали. А в рамках одного соурс сета далеко не все операции можно параллелизовать. Попробуйте еще kotlin.parallel.tasks.in.project=true, но на андроиде может что-то отвалиться
Обычно они довольно неплохо разгребаются (ну, как минимум стартовое рассмотрение задач), считать это "криком в пустоту" не стоит :)
Хорошо, попробую спасибо.
флаг попробую, спасибо. Правильно ли я понимаю - в идеальном мире в абсолюте для максимального использования железа я должен каждый сорс файл держать в отдельном модуле? Выглядит, как то, что я за компилятор должен производить работу по распараллеливанию. С другой стороны физически - разницы же нет - границы папок или границы модулей. Это не к вам конечно претензии)) но к текущей реализации тулинга. Грустно - потратив тонну денег на топовое оборудование наблюдать медленные сборки и 1% использования железа. Буду стучаться в JB, спасибо ребят.
В Java можно компилировать файлы параллельно, правда далеко не все это могут. Но в котлин из-за инлайнов это далеко не всегда возможно. Я, честно говоря, совершенно не в курсе, как оно там внутри устроено, может @ilmirus скажет. Но если вам надо выжать максимум, да режьте на модули, не по файлу, но по идейной структуре. Они компилируются параллельно. Ну и наконец вопрос, о каких временах идет речь? Если это масштаб минуты с чистого старта, то вы занимаетесь ерундой.
нет. 12 минут холодного билда при чем 12 мин на 8 ядерном core-i7 ноутбуке. и столько же на 14 ядерном core-i9 с топовым серверным ssd стационарного ПК
Ну тогда пилите свой монолит как минимум на 4 части и будет счастье. Потомки скажут вам спасибо.
у нас в рабочем проекте под 50 модулей, ну конечно есть дисбаланс в сторону одного app(он наиболее жирный). И вот... не помогает
Ну если у вас там миллион строк, то тут особо ничего не поделаешь. Я могу сказать, что в моих проектах на порядка 20-30k. Компиляция с холодного старта около минуты - двух, из которой большая часть - это тормозной JS, а инкрементальная сборка почти мгновенная.
Так посмотрите что там занимает основное время. Откуда уверенность, что именно компиляция Kotlin виновата?
не. у нас большой, млн думаю точно.... не замерял...но...очень большой в смысле - совсем не пет проект.
Он выше писал, что по билд скану. Но скорее всего действительно так
Хорошо, 12 минут с холодного старта, а инкрементальный сколько?
1. Gradle build analyzer - явно указывает 2.. Это хорошо видно в реальном времени в процессе сборки
Инкрементальную пристально не замерял на новом железе, скорее всего. Всё как и на старом... Зависит от места изменений. Расчёт конечно был на то что проблема решается железом а не структурой проекта. Я к сожалению не могу на неё влиять ... у нас по 100 андроид разработчиков
Ну делайте shared build cache
Обсуждают сегодня