Size: a a a

2020 October 05

SB

Sergey Bezrukov in Kotlin Moscow
Sergey Morgunov
Володя, спасибо большое! 👍 И правда ведь, сразу полегчало 😀
Хотя для полного аналога Java кода надо было ещё руками наверное всяких componentX понаписать, но думаю с ними можно и повременить 😂
lombok и mapstruct не забудьте подключить )
источник

SM

Sergey Morgunov in Kotlin Moscow
Sergey Bezrukov
lombok и mapstruct не забудьте подключить )
Ну чего началось то, нормально же общались 😂
источник

SM

Sergey Morgunov in Kotlin Moscow
Между нами говоря, предыдущая версия этого класса, когда он обитал в src/main/java, была как раз помечена в том числе и Lombok аннотациями 😁
источник

SM

Sergey Morgunov in Kotlin Moscow
А вот с mapstruct в Kotlin мы ещё не игрались 🤷‍♂️ Хотя его поддержку вроде уже анонсили тут.
источник

SB

Sergey Bezrukov in Kotlin Moscow
Sergey Morgunov
А вот с mapstruct в Kotlin мы ещё не игрались 🤷‍♂️ Хотя его поддержку вроде уже анонсили тут.
Кстати вот он и в котлине нелишний, наверное, при разных там преобразованиях из грязи в князи.
Надо будет попробовать его в каком-нибудь энтерпрайзе на беке.
источник
2020 October 08

MZ

Maxim Zinchenko in Kotlin Moscow
Alexander Nozik
Нормально обстоят дела. Не сильно медленнее, чем на JVM. У меня довольно большой проект с нуля собирается за минуту. Сейчас в IR вебпака вообще нет.
Вот это интересно. Это incremental?
У нас скорость компиляции Kotlin в CI является одной из причин не расширения его использования.
Проект maven мультимодуль. В CI всегда всё с нуля, поэтому никакого incremental. Тривиальные модули на 5000 строк kotlin-кода это 10-20 секунд сборки.
В то время как сравнимые модули на java компилятся меньше секунды.

Версия Kotlin всегда самая последняя. Болтанка времени компиляции по версиям определенная была, но в пределах погрешности (не на порядки).
В интернетиках разные мнения - у кого-то получается, что аналогичный код на java и kotlin компилится одинаково, а кто-то страдает как мы.
У меня есть ощущение, что некоторые красивые конструкции kotlin, которые сложно компилить, вызывают сильные замедления. Не встречали каких-то статей на эту тему?
Можно самому конечно поэкспериментировать, но вдруг это общеизвестная хрень.
источник

RI

Ruslan Ibragimov in Kotlin Moscow
Maxim Zinchenko
Вот это интересно. Это incremental?
У нас скорость компиляции Kotlin в CI является одной из причин не расширения его использования.
Проект maven мультимодуль. В CI всегда всё с нуля, поэтому никакого incremental. Тривиальные модули на 5000 строк kotlin-кода это 10-20 секунд сборки.
В то время как сравнимые модули на java компилятся меньше секунды.

Версия Kotlin всегда самая последняя. Болтанка времени компиляции по версиям определенная была, но в пределах погрешности (не на порядки).
В интернетиках разные мнения - у кого-то получается, что аналогичный код на java и kotlin компилится одинаково, а кто-то страдает как мы.
У меня есть ощущение, что некоторые красивые конструкции kotlin, которые сложно компилить, вызывают сильные замедления. Не встречали каких-то статей на эту тему?
Можно самому конечно поэкспериментировать, но вдруг это общеизвестная хрень.
Это не incremental, и в maven не факт что завезут, да и на CI если у вас каждый раз чистый env (что несомненно правильно для чистоты сборки) он работать не может. В gradle могли бы использовать build-cache на CI и в теории получился бы тот же инкрементал + пользователи на ноутах не страдали бы от первой компиляции последних изменений
источник

MZ

Maxim Zinchenko in Kotlin Moscow
Ruslan Ibragimov
Это не incremental, и в maven не факт что завезут, да и на CI если у вас каждый раз чистый env (что несомненно правильно для чистоты сборки) он работать не может. В gradle могли бы использовать build-cache на CI и в теории получился бы тот же инкрементал + пользователи на ноутах не страдали бы от первой компиляции последних изменений
В maven тоже можно было бы использовать что-то вроде build cache, если сохранять target или его часть между сборками и не делать clean. Возможно это хороший выход, но страшновато впороться в какие-то сайд-эффекты в CI.  Локально-то я вообще редко использую maven для сборки, IDEA сама за всем следит и компилит почти всегда шустро.

Меня смущает именно то, что мнения о компиляции kotlin у разных команд разные. У нас вот совершенно негативное впечатление, а кто-то считает, что сборка kotlin не особо отличается от java. Наверняка есть какое-то объяснение, так как у нас разница в скорости на порядок, а такое невозможно списать на погрешность измерения. Вот по scala, например, все вроде единодушны в том, что она компилится ужасно медленно, поэтому никаких вопросов нет
источник

RI

Ruslan Ibragimov in Kotlin Moscow
Maxim Zinchenko
В maven тоже можно было бы использовать что-то вроде build cache, если сохранять target или его часть между сборками и не делать clean. Возможно это хороший выход, но страшновато впороться в какие-то сайд-эффекты в CI.  Локально-то я вообще редко использую maven для сборки, IDEA сама за всем следит и компилит почти всегда шустро.

Меня смущает именно то, что мнения о компиляции kotlin у разных команд разные. У нас вот совершенно негативное впечатление, а кто-то считает, что сборка kotlin не особо отличается от java. Наверняка есть какое-то объяснение, так как у нас разница в скорости на порядок, а такое невозможно списать на погрешность измерения. Вот по scala, например, все вроде единодушны в том, что она компилится ужасно медленно, поэтому никаких вопросов нет
> что-то вроде build cache

maven это что-то вроде системы сборки 🙂

> Меня смущает именно то, что мнения о компиляции kotlin у разных команд разные

Я вот особо не замечаю сколько там на CI собирается, две секунды или 20. Обычно он все равно медленный, т.к. почему-то все экономят на нем, плюс не у всех есть свой репозиторий артифактов (а это значит что зависимости будут скачиваться не быстро). Вот посмотрел на свой github, один-два модуля в проекте сборка - 40с, много модулей, мало кода - 40с.
источник

RI

Ruslan Ibragimov in Kotlin Moscow
Переход с maven на gradle обычно приносит достаточное ускорение сборки, сравниваю проект на gradle - 50с сборка + артефакт (distZip), проект на maven - 1:30 - сборка
источник

MZ

Maxim Zinchenko in Kotlin Moscow
Ruslan Ibragimov
> что-то вроде build cache

maven это что-то вроде системы сборки 🙂

> Меня смущает именно то, что мнения о компиляции kotlin у разных команд разные

Я вот особо не замечаю сколько там на CI собирается, две секунды или 20. Обычно он все равно медленный, т.к. почему-то все экономят на нем, плюс не у всех есть свой репозиторий артифактов (а это значит что зависимости будут скачиваться не быстро). Вот посмотрел на свой github, один-два модуля в проекте сборка - 40с, много модулей, мало кода - 40с.
это ровно до тех пор, пока сборка не станет длится полчаса. 100 модулей по 20с это уже полчаса. есть конечно параллельность и прочее, но всё равно тратить столько времени на сборку это какая-то ерунда.
источник

RI

Ruslan Ibragimov in Kotlin Moscow
Maxim Zinchenko
это ровно до тех пор, пока сборка не станет длится полчаса. 100 модулей по 20с это уже полчаса. есть конечно параллельность и прочее, но всё равно тратить столько времени на сборку это какая-то ерунда.
Ну если у вас уже 100 модулей и куча кода, то вам надо начинать оптимизировать процесс. Даже по 3 секунды это уже слишком много. Поэтому смотреть в сторону Build Cache и историй Артема Зиннатуллина
источник

MZ

Maxim Zinchenko in Kotlin Moscow
Ruslan Ibragimov
Переход с maven на gradle обычно приносит достаточное ускорение сборки, сравниваю проект на gradle - 50с сборка + артефакт (distZip), проект на maven - 1:30 - сборка
эммм. может вы просто не умеете в maven? основное время это всё-таки время компиляции. если это не так, значит что-то у вас пошло не так. на эту тему кстати есть хорошие статьи на хабре. что с maven, что с gradle можно выстрелить себе в ногу и заставить сборку заниматься всякой ерундой, которая вам возможно и не нужна. не буду начинать тут холивар на тему того, где винтовка мощнее и выстрел в ногу получится разрушительней :)
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
Я так понимаю что котлин+gradle это всетаки лучше чем Kotlin+maven.
источник

RI

Ruslan Ibragimov in Kotlin Moscow
Maxim Zinchenko
эммм. может вы просто не умеете в maven? основное время это всё-таки время компиляции. если это не так, значит что-то у вас пошло не так. на эту тему кстати есть хорошие статьи на хабре. что с maven, что с gradle можно выстрелить себе в ногу и заставить сборку заниматься всякой ерундой, которая вам возможно и не нужна. не буду начинать тут холивар на тему того, где винтовка мощнее и выстрел в ногу получится разрушительней :)
Ну объективно из больших проектов на мавене я видел spring-boot и то он уже уехал на gradle и поделился замечательными результатами 🙂 https://spring.io/blog/2020/06/08/migrating-spring-boot-s-build-to-gradle

Когда я переводил свои проекты на gradle тоже замечал ускорение.

Что то, что то никогда особо не тюнил, т.к. над огромными репозиториями не работал давно
источник

MZ

Maxim Zinchenko in Kotlin Moscow
Ruslan Ibragimov
Ну если у вас уже 100 модулей и куча кода, то вам надо начинать оптимизировать процесс. Даже по 3 секунды это уже слишком много. Поэтому смотреть в сторону Build Cache и историй Артема Зиннатуллина
кэши в сборке это зло. можно с ним мириться и говорить, что не мы такие, жизнь такая, но ... в общем, это уже далеко от темы - что приводит к тормозам компиляции kotlin. это скорее на тему - а может вам вообще не компилировать
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
По крайней мере мы мигрируемся  с мавен в сторону gradle
источник

RI

Ruslan Ibragimov in Kotlin Moscow
Maxim Zinchenko
кэши в сборке это зло. можно с ним мириться и говорить, что не мы такие, жизнь такая, но ... в общем, это уже далеко от темы - что приводит к тормозам компиляции kotlin. это скорее на тему - а может вам вообще не компилировать
Ну скажите это всяким facebook/lyft/google и т.д.

А то напридумывали bazel/buck'ов
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
С секундомером не стоял, но в градл сборки ощущаются быстрее.
источник

Ⓢⓔⓡⓖ in Kotlin Moscow
И давайте различать сборки на компьютере девелоперов от сборок на ci cd- среде - к ним разные требования
источник