Size: a a a

Kotlin Community

2020 January 10

QH

Quantum Harmonizer in Kotlin Community
Lev Shagalov
Я никак не пойму, какие преимущества перед строкой дает использование ()->String во всяких assert?
конкатенация строк (и string templates) порождает объекты
источник

QH

Quantum Harmonizer in Kotlin Community
кстати, в котлине даже str1 + str2 создаёт стрингбилдер, хотя concat было бы эффективнее
источник

AO

Alexey Otts in Kotlin Community
Quantum Harmonizer
кстати, в котлине даже str1 + str2 создаёт стрингбилдер, хотя concat было бы эффективнее
кстати и не в котлине это также работает
источник

AO

Alexey Otts in Kotlin Community
и concat скорее всего тоже
источник

QH

Quantum Harmonizer in Kotlin Community
Alexey Otts
кстати и не в котлине это также работает
там жи всё переделали, теперь invokedynamic
источник

M

Mi in Kotlin Community
Quantum Harmonizer
там жи всё переделали, теперь invokedynamic
c 9ой вроде
источник

M

Mi in Kotlin Community
StringConcatFactory
источник

QH

Quantum Harmonizer in Kotlin Community
так точно
источник

AO

Alexey Otts in Kotlin Community
А профит в чем? Меньше размещений на стеке?
источник

QH

Quantum Harmonizer in Kotlin Community
Alexey Otts
А профит в чем? Меньше размещений на стеке?
* на хипе
источник

QH

Quantum Harmonizer in Kotlin Community
из safe джавы вообще нет способа конкатенировать строки без промежуточных аллокаций. Создай массив и сложи туда всё — всё равно конструктор строки его скопирует.
источник

AO

Alexey Otts in Kotlin Community
Нуууу, короче не очень понятно какая прям супер принципиальная разница
источник

QH

Quantum Harmonizer in Kotlin Community
Alexey Otts
Нуууу, короче не очень понятно какая прям супер принципиальная разница
промежуточные выделения памяти, как ещё сказать?)
источник

AO

Alexey Otts in Kotlin Community
Там где то под копотом вызывается concat для любого количества аргументов?
источник

QH

Quantum Harmonizer in Kotlin Community
Alexey Otts
Там где то под копотом вызывается concat для любого количества аргументов?
там invokedynamic в функцию, которая генерируется в рантайме и содержит код, невозможный для обычной джавы
источник

AM

Andrew Mikhaylov in Kotlin Community
И при этом умеет выделить сразу нужное количество символов, впоследствии уложив переменные значения в нужные позиции, а не довыделять на каждое следующее приклеивание.
источник

BP

Bogdan Panchenko in Kotlin Community
Alexander Nozik
Ну то есть ручками. Просто таскать все зависимости для либы с собой на мультиплатформе - это какой-то кошмар.
Отдельная "зависимость". Можно посмотреть точнее у ребят
источник

BP

Bogdan Panchenko in Kotlin Community
Quantum Harmonizer
кстати, в котлине даже str1 + str2 создаёт стрингбилдер, хотя concat было бы эффективнее
Jvm оптимизирует в strinbuilder же. До 9-ки*
источник

QH

Quantum Harmonizer in Kotlin Community
источник

AO

Alexey Otts in Kotlin Community
А вообще не понятно, что мешало запоминать всё что надо запендить в билдере, а потом на вызове build один раз аллоцировать массив
источник