Size: a a a

Kotlin Community

2020 August 04

AH

Ayrat Hudaygulov in Kotlin Community
ну ладно. buildList выглядит ок, а что там внутри на один список больше… Чтобы ГЦ не скучал
источник

I

Igor in Kotlin Community
Ребят, расскажите, как вы тюните Gson, чтобы он сразу падал при парсинге null в non-null поле.
А не в другом месте программы, при попытке использования поля)
источник

AO

Alexey Otts in Kotlin Community
Alexander Nozik
Не особо на самом деле. Код там получается весьма органичный, Но на buildList, разумеется лучше
Я про производительность саспенд функций на синхронном коде
источник

AN

Alexander Nozik in Kotlin Community
Alexey Otts
Я про производительность саспенд функций на синхронном коде
Ну оно там очень лихо разворачивается
источник

АЕ

Алексей Ершов... in Kotlin Community
Igor
Ребят, расскажите, как вы тюните Gson, чтобы он сразу падал при парсинге null в non-null поле.
А не в другом месте программы, при попытке использования поля)
Мигрируем на Kotlinx.serialization)
источник

BP

Bogdan Panchenko in Kotlin Community
Ayrat Hudaygulov
ну ладно. buildList выглядит ок, а что там внутри на один список больше… Чтобы ГЦ не скучал
ну это равнозначно +, если правильно помню в конце котлин производить "оптимизацию", убирая резерв ArrayList
источник

AN

Alexander Nozik in Kotlin Community
Ayrat Hudaygulov
ну ладно. buildList выглядит ок, а что там внутри на один список больше… Чтобы ГЦ не скучал
Там как раз зеро оверхед
источник

BP

Bogdan Panchenko in Kotlin Community
Alexey Otts
Я про производительность саспенд функций на синхронном коде
вроде не огромный, даклад видел
источник

AH

Ayrat Hudaygulov in Kotlin Community
Alexander Nozik
Там как раз зеро оверхед
а, он просто кастит в другой интерфейс с ридонли доступом без пересоздания?
источник

AN

Alexander Nozik in Kotlin Community
Ayrat Hudaygulov
а, он просто кастит в другой интерфейс с ридонли доступом без пересоздания?
да
источник

AH

Ayrat Hudaygulov in Kotlin Community
замечательно.
источник

AN

Alexander Nozik in Kotlin Community
Немутабельных листов нет (ну почти). Но с точки зрения апи без рефлексии все чисто
источник

I

Igor in Kotlin Community
Алексей Ершов
Мигрируем на Kotlinx.serialization)
Хороший подход, если бы не версия 0.2 🙃 и куча нашего легаси
источник

ПГ

Павло Гриник... in Kotlin Community
Igor
Ребят, расскажите, как вы тюните Gson, чтобы он сразу падал при парсинге null в non-null поле.
А не в другом месте программы, при попытке использования поля)
Насколько мне известно - такой возможности нет🤷‍♀
источник

AO

Alexey Otts in Kotlin Community
Igor
Ребят, расскажите, как вы тюните Gson, чтобы он сразу падал при парсинге null в non-null поле.
А не в другом месте программы, при попытке использования поля)
Берём jackson
источник

КР

Кирилл Романенко... in Kotlin Community
Igor
Хороший подход, если бы не версия 0.2 🙃 и куча нашего легаси
А какая разница? На стабильность это никак не влияет.) Я больше года сижу исключительно на kotlinx serialization, в проде везде только эта либа.
источник

АЕ

Алексей Ершов... in Kotlin Community
Можно упороться и сразу после парсинга пробежаться по всем полям, чтобы уж гарантированно сразу упасть если нулл затесался. Более нормальной возможности не знаю, кроме миграции на либу, которая поддерживает это сама.
источник

BP

Bogdan Panchenko in Kotlin Community
Ayrat Hudaygulov
а, он просто кастит в другой интерфейс с ридонли доступом без пересоздания?
иходники всегда заглянуть 😊

public inline fun <E> buildList(@BuilderInference builderAction: MutableList<E>.() -> Unit): List<E> {
   contract { callsInPlace(builderAction, InvocationKind.EXACTLY_ONCE) }
   return ArrayList<E>().apply(builderAction)
}
источник

AN

Alexander Nozik in Kotlin Community
Igor
Хороший подход, если бы не версия 0.2 🙃 и куча нашего легаси
Ну вот Jackson уже советовали. Он гораздо человечнее Gson и уж точно не 0.2
источник

BP

Bogdan Panchenko in Kotlin Community
Кирилл Романенко
А какая разница? На стабильность это никак не влияет.) Я больше года сижу исключительно на kotlinx serialization, в проде везде только эта либа.
+ даже config4k заменил ней
источник