Size: a a a

2019 November 26

VP

Vladimir Petrakovich in Kotlin JVM
Nick
tl;dr
приходится писать *list.toTypedArray(), в байткоде образуется лишний Collection.toArray, хотя SpreadBuilder в методе addSpread вполне себе умеет справляться с коллекциями
можно ли это исправить как-то?
Наверное, нет. Ну то есть вы классно раскопали, что там под капотом, но не похоже, чтобы этим можно было управлять.
А вы не смотрели, нет ли уже issue в YT?
источник

N

Nick in Kotlin JVM
Vladimir Petrakovich
Наверное, нет. Ну то есть вы классно раскопали, что там под капотом, но не похоже, чтобы этим можно было управлять.
А вы не смотрели, нет ли уже issue в YT?
уже подсказали на слаке, https://youtrack.jetbrains.com/issue/KT-12663, 2016 год, даже [JW] отметился
источник

VA

Victor Alenkov in Kotlin JVM
Nick
tl;dr
приходится писать *list.toTypedArray(), в байткоде образуется лишний Collection.toArray, хотя SpreadBuilder в методе addSpread вполне себе умеет справляться с коллекциями
можно ли это исправить как-то?
включите detekt у себя - “автоматом” перестанете использовать spread operator…
источник

N

Nick in Kotlin JVM
Victor Alenkov
включите detekt у себя - “автоматом” перестанете использовать spread operator…
так он и стоит
стало интересно почему он плюется на вполне себе читаемый код
источник

VA

Victor Alenkov in Kotlin JVM
Nick
так он и стоит
стало интересно почему он плюется на вполне себе читаемый код
источник

N

Nick in Kotlin JVM
просто
mutableList<Type>.apply {
  add(a)
  add(b)
  addAll(someList.flatMap { listOf(it.c, it.d) }
}

совершенно не красиво выглядит
источник

N

Nick in Kotlin JVM
источник

N

Nick in Kotlin JVM
ан нет, в этой версии нет про перформанс спреда
источник

VP

Vladimir Petrakovich in Kotlin JVM
Опять оптимизаторы на спичках призывают не использовать языковые фичи?
источник

N

Nick in Kotlin JVM
Vladimir Petrakovich
Опять оптимизаторы на спичках призывают не использовать языковые фичи?
не, тут уже с jmh
источник

N

Nick in Kotlin JVM
источник

N

Nick in Kotlin JVM
правда это еще 3 года назад было
источник

N

Nick in Kotlin JVM
хотя и ишью о спред операторе уже 3 год живет
источник

VP

Vladimir Petrakovich in Kotlin JVM
Nick
не, тут уже с jmh
Как будто это что-то меняет :)
источник

N

Nick in Kotlin JVM
Vladimir Petrakovich
Как будто это что-то меняет :)
конечно меняет, появляется не один сэмпл, а статистика
источник

VP

Vladimir Petrakovich in Kotlin JVM
Nick
конечно меняет, появляется не один сэмпл, а статистика
Да, но если эта статистика показывает, что вызов метода тратит 10 нс, а не 5, это не говорит о том, что всем надо перестать использовать vararg.
источник

N

Nick in Kotlin JVM
Vladimir Petrakovich
Да, но если эта статистика показывает, что вызов метода тратит 10 нс, а не 5, это не говорит о том, что всем надо перестать использовать vararg.
конечно, если этот метод не блокирует работу
к сожалению, в моем случае есть flatMap внутри которого listOf toTypedArray, и таких флатмапов 2
можно в идеале было бы вынести в другой поток и в другую часть логики, но есть что есть
источник

VP

Vladimir Petrakovich in Kotlin JVM
Nick
конечно, если этот метод не блокирует работу
к сожалению, в моем случае есть flatMap внутри которого listOf toTypedArray, и таких флатмапов 2
можно в идеале было бы вынести в другой поток и в другую часть логики, но есть что есть
У вас высокие требования к задержкам?
источник

VP

Vladimir Petrakovich in Kotlin JVM
flatMap + listOf выглядит немного неэффективным
источник

N

Nick in Kotlin JVM
Vladimir Petrakovich
У вас высокие требования к задержкам?
нет, но во время первого открытия экрана вполне себе сжирало
там просто экран андроид аппки был
источник