Ответ 1
Последний модификатор методов и параметров метода вообще не помогает в производительности.
Кроме того, Java HotSpot wiki дает хороший обзор оптимизаций, используемых HotSpot, и как эффективно использовать их в Java-коде.
Существует несколько советов по производительности, устаревших компилятором Java, и особенно Оптимизация профиля.. Например, эти оптимизированные платформой платформы могут радикально (согласно источникам) снизить стоимость вызовов виртуальных функций. VM также способна встраивать методы, разворачивать петли и т.д.
Каковы другие методы оптимизации производительности, которые вы применяли, которые все еще применяются, но фактически устарели с помощью механизмов оптимизации, обнаруженных в более современных JVM?
Последний модификатор методов и параметров метода вообще не помогает в производительности.
Кроме того, Java HotSpot wiki дает хороший обзор оптимизаций, используемых HotSpot, и как эффективно использовать их в Java-коде.
Люди заменяют String a = "this" + var1 + " is " + var2;
несколькими вызовами StringBuilder или StringBuffer. На самом деле он уже использует StringBuilder за кулисами.
Перед началом оптимизации производительности необходимо определить компромисс между временем и памятью. Вот как я это делаю для своего приложения, использующего память/время (повторение некоторых ответов выше, чтобы они были полными):
В 2001 году я сделал приложения для телефона J2ME. Это был размер кирпича. И очень почти вычислительная мощность кирпича.
Запуск приложений Java на приемлемой основе потребовал их написания как можно более процедурным способом. Кроме того, очень большое улучшение производительности состояло в том, чтобы поймать ArrayIndexOutOfBoundsException
, чтобы выйти из-петли по всем элементам в векторе. Подумайте об этом!
Даже на Android есть "быстрые" циклы через все элементы массива и "медленные" способы написания одного и того же, как упоминалось в видеороликах Google IO на внутренних серверах dalvik.
Однако, отвечая на ваш вопрос, я бы сказал, что в наши дни очень необычно, чтобы в этом было оптимизировать микро-оптимизацию, и я ожидал, что на JIT VM (даже на новой версии Android 2.2 VM, который добавляет JIT), эти оптимизации являются спорными. В 2001 году на телефоне был запущен переводчик KVM на частоте 33 МГц. Теперь он запускает dalvik - намного более быструю VM, чем KVM - с частотой 500 МГц до 1500 МГц, с гораздо более быстрой архитектурой ARM (лучший процессор, позволяющий получать тактовые частоты) с L1 e.t.c. и JIT.
Мы еще не находимся в сферах, где мне было бы удобно делать прямые манипуляции с пикселями в Java - либо на телефоне, либо на рабочем столе с i7 - поэтому есть нормальный ежедневный код, который Java не быстро достаточно для. Вот интересный блог, который утверждает, что эксперт сказал, что Java - это 80% скорости С++ для какой-то тяжелой задачи CPU; Я скептически отношусь, я пишу код манипуляции с изображением, и я вижу порядок между Java и native для циклов по пикселям. Может, мне не хватает трюка...?: D
При использовании x64 JVM с оперативной памятью менее 32 ГБ:
64-битная JVM использует на 30% -50% больше памяти в сравнении с 32-разрядной JVM из-за более крупных обычных указателей объектов. Вы можете значительно уменьшить этот коэффициент, используя JDK6 +.
От JDK6u6p до JDK6u22 он является необязательным и может быть включен путем добавления аргумента JVM:
-XX:+UseCompressedOops
Из JDK6u23 (JDK7 также) он включен по умолчанию. Подробнее здесь.
Я нашел ссылки выше устаревших. Ниже приведена новая оптимизация Java: http://www.appperfect.com/support/java-coding-rules/optimization.html