Pull to refresh

Comments 14

С сортировкой, чувствую, тут обман какой-то. По идее, сортировка массива указателей на объекты должно быть быстрее, чем сортировка плоских объектов, потому что вместо четырех (в данном случае) чисел нужно менять местами только два. Образно говоря, перевешиваются "номерки", вместо "чемоданов". Возможно, играет роль доступ к элементам для сравнения.

Прежде, чем перевешать "номерки", надо все-таки заглянуть в каждый "чемодан". А "чемоданы" в общем случае разбросаны по всему адресному пространству.

Конкретно в этом примере размер "номерка" совпадает с размером "чемодана".

Чувак, извини, случайно влепил тебе минус, хабр не даёт убрать :(

Я его откатил

Процессор всё равно целую кеш-линию перезаписывать будет. Если хотите, прогоните его тесты под perf. JVM, конечно, внесет свой шум, но отдельно для объектов должно преобладать ожидание памяти в этом случае.

Второе, тут два инта, значит компилятор может их вообще атомно двигать на 64-битных системах.

Третье, он отключил -XX:-TieredCompilation, поэтому какой именно код в итоге сгенерировала Hotspot и что вообще творилось - вопрос открытый.

У Project Valhalla есть один минус. Учитывая сколько его уже делают и сколько раз обещали что-нибудь наконец выкатить а воз и ныне там, есть ощущение что мы сами в Вальгалле окажемся раньше чем проект в релизе.

А никаких конкретных планов, когда что-то из Вальхаллы мы увидем в релизе java?

Данный пример не очень релевантный, потому что можно исхитриться без Вальгаллы.

В случае, если в классе находятся примитивы одного типа, можно организовать класс с массивом двойной длины (в данном примере) и хранить в x в четных, y в нечетных ячейках массива. Организовать get и set соответствующим образом.

Буду признателен тому, кто подскажет, как несколько int из массива преобразовать в double. Иначе говоря, как в массиве int хранить значение double, без создания объектов, как это можно делать в C.

хранить значение double, без создания объектов

Чем массив double не угодил?

Помимо "локальности" данных, новые inline/primitive типы позволяют аллоцировать данные "на регистрах процессорах", не делая дополнительных обращений к опереативной памяти и экономить такты процессора. В целом и сейчас такие кейсы могут упрощаться на этапе escape анализа. За то "скидывать" новые типы данные в ОП или нет, отвечает JVM

На дворе 2024, а в Java и JVM до сих пор не завезли value типы :(

10 лет назад, прочитав про этот проект, я подумал: о, круто, наконец-то завезут фичу из первого дотнета, начала 2000х)

Sign up to leave a comment.

Articles