Java на habrahabr

Июнь 22, 2011

 

JAVA / [Из песочницы] Еще немного о производительности Java

“Есть ложь большая, есть маленькая, а есть статистика производительности Java.”

В последнее время я стал замечать обилие тестов производительности Java с удивительно невероятным разбросом результатов тестирования. Результаты отличают с точностью до полной противоположности, в зависимости от того кто проводит тесты.

Многим понятно, что такие тесты это часть маркетинга. И то кто его заказывает, заказывают и результат. Но удивительность ситуации в том, что упрекнуть во лжи некого. Нельзя отказать в истинности тех тестов в которых Java на порядок уступает C#, ни тем тестам в которых Java превосходит С++ (не Си). Проблема в том, что такие тесты ориентированны в основном на начинающих разработчиков с целью переманить в свой стан побольше программистов и тем самым увеличить коммерческую привлекательность платформы для бизнеса. И в таких теста намеренно упускаются сложные для понимания подробности работы динамической JIT компиляции и адаптивной оптимизации HotSpot, в которые начинающие программисты редко вдаются.

Чем это чревато? Банальным когнитивным диссонансом.

Java на habrahabr

Апрель 25, 2011

 

JAVA / Исследуем multiple dispatch на HotSpot

Пост из серии «будни перформанс-инженеров». Иногда в проектах возникает необходимость сделать т.н. multiple dispatch: возможность вызвать конкретный метод, основываясь на типах аргументов.

Например, есть два метода:
class Caller { public void doSomethingNasty(A aInstance) { ... }; public void doSomethingNasty(B aInstance) { ... } }
Когда точный тип аргумента известен во время компиляции, проблем никаких нет: это обычная перегрузка методов и компилятор может точно выбрать, какой из методов звать. Но что если этот тип становится известным только во время исполнения?

class A extends Base { ... } class B extends Base { ... } class Caller { public void pleaseDoThat(Base instance) { doSomethingNasty(instance); // compile error } }
В Java подобный код вызовет ошибку компиляции, ибо нефиг. Что делать, если всё-таки надо? Значит, нужно в рантайме определить нужный метод.

Java на habrahabr

Октябрь 28, 2010

 

JAVA / [Ссылка] Оптимизация производительности: эффективное взаимодействие с виртуальной машиной

У заказчика на production возникли серьезные паузы из-за Garbage Collector-а.
Изучая интернет наткнулся вот на эту презентацию. Написано на русском и просто.
Некоторые вещи для меня были новыми.

Garbage-First есть уже в 1.6.14 (http://habrahabr.ru/blogs/java/68501/)
Мануал по GC http://www.oracle.com/technetwork/java/gc-tuning-5-138395.html

Java на habrahabr

Август 23, 2010

 

JAVA / Строковые классы Java. Сравнение производительности

Никогда не задавались вопросом насколько собственно отличается производительность строковых классов Java?

В данном топике я попытался сравнить производительность java.lang классов String, StringBuilder и StringBuffer.