Зачем оптимизировать?

Любой программист может написать работающий код. При написании крупномасштабных корпоративных Java-приложений самая большая проблема заключается в том, что требуется слишком много ресурсов, и эти ресурсы (память, циклы ЦП, пропускная способность сети или их комбинация) могут быть ограничены. Оптимизация кода поможет сохранить работоспособность памяти, производительности и других ресурсов.

Современные компиляторы выполняют продвинутый уровень оптимизации. Но уровень оптимизации, который javacвыполняет при компиляции кода на данном этапе, минимален.

Пример 1: сумма = (2 * 50) соответствует сумме = 100.

Следующий мертвый код также будет устранен во время компиляции.

Пример 2:

if(false){ count = 10; }

Кроме того, компилятор Java Just-In-Time использует один параметр производительности, чтобы заставить компилятор встраивать определенные вызовы методов. См. приведенный ниже пример для встраивания метода.

Пример 3:

public int add(int a, int b) { return a + b; }

public void testAdd() {
int val = добавить(2, 5);
int val1 = добавить(7, 13);
// делаем что-то с val, val1
}

После компиляции метод встроен следующим образом:

общественный недействительным testAdd () {

int val = 2+5;
int val1 = 7+13;
}

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

Как оптимизировать код?

  • Объекты (или строки, HashMaps, …) дешевы
  • Фреймворки написаны экспертами, поэтому они были оптимизированы
  • JIT и GC все исправят
  1. Управление типами данных
  2. Убедитесь, что вы выбрали подходящий тип данных для подходящих операций. (т.е. не выбирайте тип int для возраста, вместо этого используйте byte/short )

Всегда заботьтесь о следующем,

  • Накладные расходы от ваших типов данных
  • Накладные расходы от выбора вашей коллекции, фиксированные или переменные
  • Множество других способов разбить накладные расходы
  • Накладные расходы на объект JVM, пустые слоты массива, неиспользуемые поля, повторяющиеся данные,…
  1. Управление временем существования объекта

Не делайте объекты сложными. сделать их простыми и не удлинять жизненный цикл объектов, что может привести к проблемам параллелизма, утечкам и дополнительным затратам памяти.Для примера: если в куче живет 80 миллионов объектов, если каждый объект содержит не менее четырех полей

80M x 32 байта = 2,5G