Size: a a a

Kotlin Community

2020 September 08

IO

Iaroslav Orlov in Kotlin Community
Bogdan Panchenko
Инлайн классы более бесполезны сиквенсы
не, сиквенсы немножко быстрее обычных переборов, если нет стримов
источник

BP

Bogdan Panchenko in Kotlin Community
Iaroslav Orlov
не, сиквенсы немножко быстрее обычных переборов, если нет стримов
Не быстрей. Только в редких кейсов
источник

BP

Bogdan Panchenko in Kotlin Community
@noraltavir могли бы аннотацию завести "ССЗБ", типа я пометил что бы оно не боксило, и за это отвечал только я
источник

IO

Iaroslav Orlov in Kotlin Community
Bogdan Panchenko
Не быстрей. Только в редких кейсов
источник

IO

Iaroslav Orlov in Kotlin Community
все-таки кейсы есть :D
источник

IO

Iaroslav Orlov in Kotlin Community
и оттуда же
источник

OY

Oleg Yukhnevich in Kotlin Community
Bogdan Panchenko
Duration ? Вполне нужно. UInt  не нужно ? Тогда зачем для них массивы сделали. Result - да в колекции пихать не нужно. В итоге 2:1
Вот для unsigned как раз только массивы и нужны, чтобы не боксить, как и с обычными массивами
Да и по сути, поправьте, если я не прав, но если коллекция будет List<Int> vs List<Inline> где внутри Int - то сильного буста не будет, так как в любом случае будут создаваться объекты и смысла будет не так много, как при работе без коллекций
источник

BP

Bogdan Panchenko in Kotlin Community
Есть один нюанс, сделать несколько разных мап и фильтров и сиквенс будет проигрывать. В jvm просто есть оптимизация .

Я в итоге замерял. Правда по дурацки, до JMH руки не дошли, и сиквенс не очень показал себя
источник

BP

Bogdan Panchenko in Kotlin Community
Oleg Yukhnevich
Вот для unsigned как раз только массивы и нужны, чтобы не боксить, как и с обычными массивами
Да и по сути, поправьте, если я не прав, но если коллекция будет List<Int> vs List<Inline> где внутри Int - то сильного буста не будет, так как в любом случае будут создаваться объекты и смысла будет не так много, как при работе без коллекций
А вы создадите List<UInt> и у вас будет двойной бокс
источник

OY

Oleg Yukhnevich in Kotlin Community
Bogdan Panchenko
А вы создадите List<UInt> и у вас будет двойной бокс
Так я о том, что двойной бокс vs один бокс не будет так сильно заметна разница, как если бы их не было (например в массивах)
Но всё понятное дело зависит от Ваший кейсов, где это прям критично
источник

BP

Bogdan Panchenko in Kotlin Community
Bogdan Panchenko
Есть один нюанс, сделать несколько разных мап и фильтров и сиквенс будет проигрывать. В jvm просто есть оптимизация .

Я в итоге замерял. Правда по дурацки, до JMH руки не дошли, и сиквенс не очень показал себя
Я поправил
источник

BP

Bogdan Panchenko in Kotlin Community
Oleg Yukhnevich
Так я о том, что двойной бокс vs один бокс не будет так сильно заметна разница, как если бы их не было (например в массивах)
Но всё понятное дело зависит от Ваший кейсов, где это прям критично
Будет и по памяти и по cpu
источник

BP

Bogdan Panchenko in Kotlin Community
Бокс всегда был проблемой
источник

AN

Alexander Nozik in Kotlin Community
Bogdan Panchenko
@noraltavir могли бы аннотацию завести "ССЗБ", типа я пометил что бы оно не боксило, и за это отвечал только я
Ну никто не спорит с тем, что "если бы оно хорошо работало, было бы хорошо". Но пока не работает. Потому что не придумали как. Ресерчим и реализуем. Мы вон в kmath сделали   почти настоящую валхаллу на либном уровне.
источник

BP

Bogdan Panchenko in Kotlin Community
Ладно тут ещё один дурацкий бокс

inline class T(val s: String) : CharSequence ...

val p: CharSequence = T("box")
источник

AN

Alexander Nozik in Kotlin Community
Bogdan Panchenko
Ладно тут ещё один дурацкий бокс

inline class T(val s: String) : CharSequence ...

val p: CharSequence = T("box")
Я кстати хочу обратить внимание на то, что не все, что боксится в байткоде, боксится на самом деле. Скаляризация весьма недурственно работает
источник

BP

Bogdan Panchenko in Kotlin Community
Alexander Nozik
Ну никто не спорит с тем, что "если бы оно хорошо работало, было бы хорошо". Но пока не работает. Потому что не придумали как. Ресерчим и реализуем. Мы вон в kmath сделали   почти настоящую валхаллу на либном уровне.
Ага и теперь что бы разобраться в коде нужно приличное время (я про того кто захочет разобраться)
источник

AN

Alexander Nozik in Kotlin Community
А на тему не боксирующих листов примитивов идет ресерч (не у меня).
источник

BP

Bogdan Panchenko in Kotlin Community
Alexander Nozik
Я кстати хочу обратить внимание на то, что не все, что боксится в байткоде, боксится на самом деле. Скаляризация весьма недурственно работает
Надеятся на нее не стоит сильно, работает только в примитивных случаях
источник

AN

Alexander Nozik in Kotlin Community
Bogdan Panchenko
Надеятся на нее не стоит сильно, работает только в примитивных случаях
Надяться не надо, надо мерить.
источник