Как стать автором
Обновить

Комментарии 8

Ява не умеет AVX использовать?
На моём процессоре Intel Core i7-4710MQ представленный код компилируется в SIMD-инструкции vaddsd, vmulsd и др.

Мне кажется пора менять акцент с конкретных задачек, на описание алгоритмов и оптимизаций реализованных в JVM. Это улучшит общее понимание проблемы и даст возможность самостоятельно анализировать код.

Акцент во всех трёх частях был на изучении поведения и выявлении его причин.
Возможно, вы правы, и от академического изложения пользы для читателя будет больше. Попробую четвёртую задачу разобрать в другом ключе, благо сам текст написан лишь частично.
Не заметил, как у меня во время редактирования пропал кусок разметки с самым интересным результатом работы бенчмарка Vector-with-final-fields vs Vector-with-non-final-fields на JRE 1.8.0_161:
Benchmark                                        Mode  Cnt  Score   Error  Units
FinalOrNotFinal...computeWithFinalsBenchmark     avgt   50  2,618 ± 0,075  ns/op
FinalOrNotFinal...computeWithNonFinalsBenchmark  avgt   50  0,929 ± 0,005  ns/op

Кроме самого факта необычности результата, интересно и то, что на JRE 9.0.4 результат не воспроизводится.

Спасибо sheknitrtch за найденную ошибку!
Отправил соответствующий баг в Oracle по странному различию в производительности по сути идентичного кода (см. FinalOrNotFinalBenchmark). Сегодня подтвердили баг: JDK-8200412.
Баг был закрыт с резолюцией Won't fix:
Original issue JDK-8139758 is performance enhancement.
We will not be fixing this in 8.

Closing as wnf
Зарегистрируйтесь на Хабре, чтобы оставить комментарий