Size: a a a

Kotlin Community

2020 May 16

QH

Quantum Harmonizer in Kotlin Community
Любая многопоточка использует Unsafe. Atomic*, FutureTask, ForkJoinPool.
источник

IO

Iaroslav Orlov in Kotlin Community
Iaroslav Orlov
либо можно прикрыть лавочку с Unsafe.class.getStaticField("theUnsafe")
на openjdk-8 у меня это работало
источник

AM

Andrew Mikhaylov in Kotlin Community
Igor
тк все кейсы использования класса не продумаешь, то и подовсе приватные поля не напилишь

мне кажется кеширование должна заниматься вызывающая сторона (и то после профайлирования)
Кешированием должен компилятор заниматься, который мемоизацию в нужных местах сам сделает 🌚 Но у нас такого нет, а без этого, КМК, можно кешировать и в приватных полях, и на вызывающей стороне в зависимости от возможности трогать дата класс и частоты обращения к этому кешируемому свойству.
источник

I

Igor in Kotlin Community
Andrew Mikhaylov
Кешированием должен компилятор заниматься, который мемоизацию в нужных местах сам сделает 🌚 Но у нас такого нет, а без этого, КМК, можно кешировать и в приватных полях, и на вызывающей стороне в зависимости от возможности трогать дата класс и частоты обращения к этому кешируемому свойству.
ну как нету, берете compose - там memoized есть (или что-то наподобии)
источник

QH

Quantum Harmonizer in Kotlin Community
Igor
ну как нету, берете compose - там memoized есть (или что-то наподобии)
🌚
источник

AM

Andrew Mikhaylov in Kotlin Community
Igor
ну как нету, берете compose - там memoized есть (или что-то наподобии)
Но он как раз по месту вызова кеширует, и сделан, насколько я понял, чтобы в конкретной функции при рекомпозиции значение не перевычислялось. То бишь это довольно узкий случай мемоизации.
источник

IO

Iaroslav Orlov in Kotlin Community
Andrew Mikhaylov
Но он как раз по месту вызова кеширует, и сделан, насколько я понял, чтобы в конкретной функции при рекомпозиции значение не перевычислялось. То бишь это довольно узкий случай мемоизации.
а где она нормально сделана?
источник

IO

Iaroslav Orlov in Kotlin Community
если это не ФП, естественно :D
источник

AM

Andrew Mikhaylov in Kotlin Community
Iaroslav Orlov
если это не ФП, естественно :D
Вы всё правильно поняли :)
источник

AN

Alexander Nozik in Kotlin Community
Andrew Mikhaylov
Кешированием должен компилятор заниматься, который мемоизацию в нужных местах сам сделает 🌚 Но у нас такого нет, а без этого, КМК, можно кешировать и в приватных полях, и на вызывающей стороне в зависимости от возможности трогать дата класс и частоты обращения к этому кешируемому свойству.
у вас - это на андроиде?
источник

AM

Andrew Mikhaylov in Kotlin Community
Alexander Nozik
у вас - это на андроиде?
А у вас не на андроиде в котлине есть ссылочная прозрачность и мемоизация из коробки?
источник

AN

Alexander Nozik in Kotlin Community
Andrew Mikhaylov
А у вас не на андроиде в котлине есть ссылочная прозрачность и мемоизация из коробки?
Мемоизация по крайней мере частичная есть в JIT.
источник

AN

Alexander Nozik in Kotlin Community
Но довольно простенькая.
источник

AN

Alexander Nozik in Kotlin Community
Скажем, если результат всегда один и тот же возвращается, он скорее всего вычисляться не будет. Но я не говорю, что это полонценный кэш.
источник

AM

Andrew Mikhaylov in Kotlin Community
Alexander Nozik
Мемоизация по крайней мере частичная есть в JIT.
И она соптимизирует

data class C(val a: String, val b: String)
fun C.out(): String = "$a $b"
val res = C("Hello", "world").out()

в
val res = "Hello world"
?
источник

AN

Alexander Nozik in Kotlin Community
Andrew Mikhaylov
И она соптимизирует

data class C(val a: String, val b: String)
fun C.out(): String = "$a $b"
val res = C("Hello", "world").out()

в
val res = "Hello world"
?
Не уверен, но в данном случае думаю, что да.
источник

AM

Andrew Mikhaylov in Kotlin Community
Ну окей, круто
источник

AN

Alexander Nozik in Kotlin Community
Andrew Mikhaylov
Ну окей, круто
Я не уверен. Это надо спецов спросить.
источник

BP

Bogdan Panchenko in Kotlin Community
Andrew Mikhaylov
И она соптимизирует

data class C(val a: String, val b: String)
fun C.out(): String = "$a $b"
val res = C("Hello", "world").out()

в
val res = "Hello world"
?
Думаю да.
источник

AN

Alexander Nozik in Kotlin Community
йоу, я сделал сиквенс из трех элементов. Оно мне оказалось нужно. Всегда всем рассказывал, что оно не надо
источник