1. В важных циклах исключите вызовы методов при оценке завершения цикла.
Скопируйте код кода следующим образом:
for(int i=0; i<collection.size(); i++)
{
...
}
for(int i=0; i<collection.size(); i++)
{
...
}
Заменить на…
Скопируйте код кода следующим образом:
просмотреть обычную копию в буфер обмена, распечатать?
for(int i=0;n=collection.size();i<n;i++)
{
...
}
2. Обычно элементы, не относящиеся к индексу цикла, перемещаются за пределы цикла.
Скопируйте код кода следующим образом:
for(int i=0;terminal=x.length;i<terminal;i++){
X[i]=x[i]/масштабA*масштабB;
}
for(int i=0;terminal=x.length;i<terminal;i++){
X[i]=x[i]/масштабA*масштабB;
}
Изменить на
Скопируйте код кода следующим образом:
двойная шкала = шкала B/шкала A;
for(int i=0; терминал=x.length; i<terminal; i++){
X[i]=x[i]*масштаб;
}
2. Строка
Устранение конкатенации строк. При создании длинных строк всегда используйте StringBuffter вместо String.
Предварительное выделение пространства StringBuffer
StringBuffer sb = новый StringBuffer(5000);
3. Основные типы данных
Используйте базовые типы данных в важных циклах (типы данных int обычно работают быстрее, чем типы данных long/double).
Классы-оболочки базовых типов данных (Boolean, Integer и т. д.) в основном используются, когда передаваемый параметр метода должен быть ссылкой на объект (а не на базовый тип данных).
Используйте модификатор static Final для всех константных алгебраических выражений.
Один упрощает обращение к константам (компилятор предварительно вычисляет константные выражения).
4. Аномалия
Исключения используются только для одного истинного условия ошибки.
Выброс исключения и выполнение блока catch требует больших затрат (в основном из-за получения снимка стека потока при создании исключения)
Исключение выдается только тогда, когда состояние действительно ненормально.
Оптимизируйте компилятор и среду выполнения, поместив несколько вызовов методов в блок try/catch вместо реализации нескольких блоков try/catch для каждого вызова метода.
5. Тест
Обратите внимание, что все эти советы будут различаться в зависимости от платформы и виртуальных машин.
Например: в некоторых контейнерах сервлетов быстрее выводить байты через OutputStream, а в других контейнерах быстрее выводить символы через PrintWriter.
Эти советы описывают наиболее переносимые рекомендации.
Возможно, вам придется запустить несколько тестов, чтобы определить, что работает быстрее всего на вашей платформе.