Size: a a a

Kotlin Community

2020 May 26

QH

Quantum Harmonizer in Kotlin Community
Pratik
Can you share the link to that group?
источник

P

Pratik in Kotlin Community
Thanks
источник

Y

Yanis in Kotlin Community
Cделал для себя открытие, оказывается лямбды в байткоде трансформируются в анонимные классы даже на Android API 28
Это нормально да?
источник

AM

Andrew Mikhaylov in Kotlin Community
Yanis
Cделал для себя открытие, оказывается лямбды в байткоде трансформируются в анонимные классы даже на Android API 28
Это нормально да?
Да.
источник

Y

Yanis in Kotlin Community
я конечно в джаве не силен, но думал что "правильные" лямбды это нечто легковесное
источник

Y

Yanis in Kotlin Community
или это просто андроид не умеет
источник

Sergey λ in Kotlin Community
Yanis
или это просто андроид не умеет
андроид рантайм не умеет
источник

VP

Vladimir Petrakovich in Kotlin Community
Yanis
или это просто андроид не умеет
Это kotlinc не умеет, но это не очень-то и надо
источник

RE

Roman Elizarov in Kotlin Community
А чем анонимные классы тяжелые? В JVM 1.8+, там как бы кажется, что есть магическая мета-фабрика, но ведь под капотом все-равно класс есть (позовите getClass и вы его увидите). А хорошие современные runtime-ы и классы весьма хорошо оптимизируют, чтобы они были легковесными.
источник

AM

Andrew Mikhaylov in Kotlin Community
Yanis
я конечно в джаве не силен, но думал что "правильные" лямбды это нечто легковесное
Вы ж навеврняка релизные билды прогоняете через R8, который в том числе оптимизирует аллокации, связанные с котлиновскими лямбдами, в рамках возможного: https://jakewharton.com/r8-optimization-lambda-groups/
источник

Y

Yanis in Kotlin Community
вот профайлю память чтобы понять откуда GC и вижу кучу лямбд
источник

VP

Vladimir Petrakovich in Kotlin Community
Yanis
вот профайлю память чтобы понять откуда GC и вижу кучу лямбд
Если они захватывают контекст, то тут как не компилируй, объекты нужны
источник

Y

Yanis in Kotlin Community
без контекста
попробую через R8 прогнать
источник

AM

Andrew Mikhaylov in Kotlin Community
Yanis
без контекста
попробую через R8 прогнать
Можете статью почитать, там описаны конкретные оптимизации, которые а состоянии сделать R8.
источник

AM

Andrew Mikhaylov in Kotlin Community
А у вас в аллокациях лямбд прям боттлнек рисуется?
источник

Y

Yanis in Kotlin Community
На каждом фрейме создается, пока не могу сказать что это боттлнек
источник

QH

Quantum Harmonizer in Kotlin Community
Yanis
вот профайлю память чтобы понять откуда GC и вижу кучу лямбд
профайлер умеет (или раньше умел) запоминать стек моментов, где объекты создались
источник

Y

Yanis in Kotlin Community
не знаю такого, нужно поискать
источник

AN

Alexander Nozik in Kotlin Community
Yanis
На каждом фрейме создается, пока не могу сказать что это боттлнек
Надо смотреть. Вообще, если вы не злоупотребляете Sequence, то особых проблем с этим быть не должно. Котлин стдлиб почти все инлайнить
источник

Y

Yanis in Kotlin Community
судя по байткоду не инлайнит и профайлер показывает тысячи инстансов лямбды
но может это и другие лямбды, сложно понять по имени
печально что когда сталкиваешься с таким понимаешь что вся магия котлина не дается просто так и потом сидишь переписываешь код аля java/cpp
источник