Size: a a a

Kotlin Community

2020 April 05

IK

Igor Kalishevsky in Kotlin Community
То есть на месте Box у меня на самом деле пагинированная страница
источник

AD

Apache DOG™ in Kotlin Community
Alexey Otts
Магия - это всё, чего код ты не можешь прочитать
Рефлексия нечитаема потому что без типов
источник

AN

Alexander Nozik in Kotlin Community
Посмотрите локу по полиморфным контейнерам в репе. Пустят к компьютеру - дам ссылку
источник

AD

Apache DOG™ in Kotlin Community
Делаете рефлексию делайте staged programming, а не kaktorabotaetihersnim programming
источник

AN

Alexander Nozik in Kotlin Community
Но вообще надо просто на T повесить аннотацию и сериал модуль сделать
источник

IK

Igor Kalishevsky in Kotlin Community
Alexander Nozik
Посмотрите локу по полиморфным контейнерам в репе. Пустят к компьютеру - дам ссылку
источник

AN

Alexander Nozik in Kotlin Community
да
источник

AN

Alexander Nozik in Kotlin Community
надо вещать на T, но я не уверен, что будет работать с абстрактной коллекцией...
источник

IK

Igor Kalishevsky in Kotlin Community
Я так и сделал пока что. У меня на content висит marker interface, для которого я написал кучу polymorphic(){ bla::class with bla.serializer()}
источник

AO

Alexey Otts in Kotlin Community
Apache DOG™
Рефлексия нечитаема потому что без типов
Ты вот вроде пишешь слова, но получается какая то каша
источник

AN

Alexander Nozik in Kotlin Community
Igor Kalishevsky
Я так и сделал пока что. У меня на content висит marker interface, для которого я написал кучу polymorphic(){ bla::class with bla.serializer()}
Аннотация должна быть не на content, а на типе унутре. Но тут надо немного поэкспериментировать к сожалению
источник

VD

Vitaly Demidenko in Kotlin Community
а почему String.split().filer{}.foreach{} гораздо быстрее String.splitToSequence().filer{}.foreach{} ?
источник

AN

Alexander Nozik in Kotlin Community
Vitaly Demidenko
а почему String.split().filer{}.foreach{} гораздо быстрее String.splitToSequence().filer{}.foreach{} ?
Я подозреваю, что должно сильно зависеть от размера строки и количества сегментов, но вообще генерация Sequence не бесплатная
источник

AL

Alexander Levin in Kotlin Community
Vitaly Demidenko
а почему String.split().filer{}.foreach{} гораздо быстрее String.splitToSequence().filer{}.foreach{} ?
Потому что вы не уточнили входные данные? :)

Скорее всего результат аналогичен любой произвольной задаче с ленивым и неленивым вычислением. В случае ленивых операций у вас есть накладные расходы, но нету промежуточных коллекций, ибо вы делаете только один проход. В случае неленивых операций у вас куча накладных расходов уходят (лямбды не только не надо создавать и хранить, но они просто заинлайнятся), но на каждую операцию будет создаваться по коллекции (вроде такую вещь под капотом проще оптимизировать ещё, но тут я не эксперт, так что цитировать не стоит :D). Обычно считается, что при достаточно большом размере исходной коллекции расходы на неленивый подход дороже.
источник

AN

Alexander Nozik in Kotlin Community
Alexander Levin
Потому что вы не уточнили входные данные? :)

Скорее всего результат аналогичен любой произвольной задаче с ленивым и неленивым вычислением. В случае ленивых операций у вас есть накладные расходы, но нету промежуточных коллекций, ибо вы делаете только один проход. В случае неленивых операций у вас куча накладных расходов уходят (лямбды не только не надо создавать и хранить, но они просто заинлайнятся), но на каждую операцию будет создаваться по коллекции (вроде такую вещь под капотом проще оптимизировать ещё, но тут я не эксперт, так что цитировать не стоит :D). Обычно считается, что при достаточно большом размере исходной коллекции расходы на неленивый подход дороже.
источник

VD

Vitaly Demidenko in Kotlin Community
спасибо, тестил на строке длины 3 ляма
источник

AN

Alexander Nozik in Kotlin Community
Vitaly Demidenko
спасибо, тестил на строке длины 3 ляма
Вот это немного странно. На такой длинной последовательности должны уже выигрывать.
источник

VD

Vitaly Demidenko in Kotlin Community
так, теперь поменял местами вызовы, поменялось и время....
источник

VD

Vitaly Demidenko in Kotlin Community
а, нет, не поменялось))
источник

VD

Vitaly Demidenko in Kotlin Community
Alexander Nozik
Вот это немного странно. На такой длинной последовательности должны уже выигрывать.
в полтора раза проигрывает, но в принципе 3 ляма это же не много
источник