Рефакторинг на Котлин

Я работаю над небольшим проектом с использованием SpringBoot для извлечения данных из Kafka и передачи их стороннему поставщику. Мой проект не зависит от других наших микросервисов.

Мне интересно, будет ли улучшение производительности при рефакторинге на Kotlin или это чисто для удобства чтения?

Главное преимущество Kotlin - улучшенная выразительность и «время выхода на рынок»; не обязательно производительность во время выполнения. С этой точки зрения, ваш вопрос не подходит этому сообществу.

GhostCat 27.06.2018 12:09

Я не думаю, что Kotlin действительно может сократить какие-либо расходы по времени выполнения, поскольку его ресурсы фиксированы. Итак, даже если stackoverflow может не соответствовать этому типу вопросов, читабельность - это ответ на ваш вопрос.

Efthimis_28 27.06.2018 12:11

в любом случае все это компилируется в байт-код java, поэтому никаких улучшений производительности не должно быть.

Jakob 27.06.2018 12:12

Ну да, если у вас есть рекурсивный метод и вы используете ключевое слово tailrec, например

EpicPandaForce 27.06.2018 12:14
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
4
78
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Компиляция Kotlin кажется медленнее: https://medium.com/keepsafe-engineering/kotlin-vs-java-compilation-speed-e6c174b39b5d

В остальном это байт-код в обоих местах. Единственная разница в том, что в Kotlin есть более быстрые реализации функций. (возможно нет).

Однако, если вы можете сделать более читаемый код (субъективно) в Kotlin, у вас будет больше шансов найти места для оптимизации.

TL; DR: не переносите язык из соображений производительности только на этом языке.

Но эта оценка сделана 2 года назад. И Gradle, и Kotlin внесли много улучшений, поэтому я был бы удивлен, если бы больше не было разницы. Я, конечно, не стал бы сбрасывать со счетов Kotlin, даже если он немного медленнее, поскольку компилятор делает больше, и я считаю, что язык чаще помогает подтолкнуть разработчиков в правильном направлении. На самом деле нравится статический анализ непосредственно как часть сборки с использованием Detekt, а не постфактум, как в Sonarqube.

Mikezx6r 28.06.2018 05:09

Java ближе к способу работы JVM, чем Kotlin (методы не могут выглядеть как доступ к полям, вы можете лучше увидеть, где используются примитивы, по сравнению с классами и т. д.). Любые различия в производительности при попытке написать эквивалентный код (то есть без алгоритмических улучшений), скорее всего, будут обратными. Но они также могут быть тривиальными, особенно если рассматривать их как часть полного приложения.

Хм, так что используйте Kotlin, если я думаю, что еще один уровень абстракции будет полезен?

Gabby 28.06.2018 11:31

Я бы так не сказал. Используйте его для удобочитаемости и продуктивности. Что касается производительности, вы может по-прежнему делаете почти все, что делаете на Java, в Kotlin, вам просто нужно понять, как это работает.

Alexey Romanov 28.06.2018 12:13

Другие вопросы по теме