или прям создаётся тупл в рантайме и анматчится?
Прям создаётся и распаковывается
Благодарю. Лучшее комьюнити!
Мне казалось что для людей которые занимаются компиляторами это тривиальная оптимизация
слишком специфичный кейс, чтобы для него специально что-то делать, при том, что JIT скорее всего и так всё сделает ,что нужно
Я понял главное что дальше jvm комьюнити не планирует уходить
В принципе, в Scala Native инвестируют. Про уходить в native пока слишком рано говорить. Пока даже до "использовать" не дошли толком 😅
это я уже понял, почему и заинтересовался, что происходит на уровне спеки самой скалы (не учитывая того что ЖВМ бай дефаулт )
самого заинтересовало, посмотрел что будет, вообщем если взять такой кейс на скале и запустить с С2 получиться как то так object TestTupleUnapply { def main(args: Array[String]): Unit = { test() } def test(): Unit = { for (_ <- 1 to 100_000) { val (a, b) = (100500, 100600) println(a + b) } } } java.io.PrintStream::println201100@1 (line 821) 0x000000011fcea6c4: mov %rdx201100,%rsi Я до конца синтаксис интовый не понимаю, но судя по результату там contstexpr сработал, и сразу на принт уходит посчитанное значение (так что большинство кейсов должны быть без алокаций для случаев где С2 сгенерировал натив) UPD
Спасибо, интересно!
Обсуждают сегодня