https://kotlinlang.org logo
Title
b

beholder

10/02/2017, 7:31 PM
@snrostov, через лямбду можно, но запись слишком длинная получается
s

snrostov

10/02/2017, 7:34 PM
ну,
val setter = (KotlinClass::someProperty)::set
это наверное будет не быстро работать (ибо рефлекшен), и, как уже выше написали генерит 2 лишних класса.
b

beholder

10/02/2017, 7:35 PM
Нет, так без рефлекшена, но генерятся сразу 2 скрытых класса
Хотя если подумать, то с рефлекшеном может быть накладные расходы и меньше будут...
s

snrostov

10/02/2017, 7:42 PM
хм, точно, нет рефлекшена. не знал что KProperty::set генерит класс с "нативным" сеттером без рефлекшена. круто
Хотя если подумать, то с рефлекшеном может быть накладные расходы и меньше будут...
ну вот hotspot что то не очень инлайнит рефлекшен, если например, как в примере выше, сериализацию через рефлекшен делать. ну либо я что то не так делал. если развернуть цикл по полям вручную, то получается почти на порядок быстрее. правда не уверен в точности своих замеров
b

beholder

10/02/2017, 7:50 PM
Насколько я слышал, в hotspot всё равно для рефлекшена генерятся анонимные классы "на лету" в память
Инлайнить он будет, но циклов пройти должно много, и желательно в server VM
s

snrostov

10/02/2017, 7:59 PM
да, он генерит, но почему то цикл все равно не разворачивает
видимо не может знать что набор полей - константа
но это только предположение, глубоко не изучал
a

aleksey.tomin

10/03/2017, 5:03 AM
Рефлекшн из-за jdk6?