1. Цель нашего выполнения:
1. Эффективность (наиболее важная)
2. читаемость, легко поддерживать на более позднем этапе. (Также важно)
2. Требования к оптимизации кода:
1. Уменьшите объем кода.
2. Повышение эффективности работы кода.
3. Оптимизация часто используемого кода:
1. Попробуйте повторно использовать объекты:
Особенно повторное использование строковых объектов. Наиболее часто используется сплайсинг строки:
При встрече с частым вытиркой строки. Не забудьте использовать StringBuilder/StringBuffer
Например:
ArrayList <string> list; StringBuilder Builder = new StringBuilder ();
Причина: виртуальные машины Java не только должны тратить время на создание объектов, но и должны тратить время на обработку и переработку объектов.
2. Используйте локальные переменные, где это возможно:
Локальные переменные создаются в стеке и создаются быстро и автоматически исчезают после использования, без дополнительной сбора мусора.
Статические переменные, переменные экземпляра и т. Д. Созданы в куче, а скорость создания медленная, и она также опирается на механизм сбора мусора Java.
3. Закройте поток во времени:
В разработке программы Java после завершения операций ввода/вывода и базы данных вы должны помнить, чтобы закрыть поток.
Причина: не закрытие потока может вызвать большие накладные расходы в систему и может даже иметь серьезные последствия для данных.
4. Используйте ленивую загрузку
Ленивая загрузка: создайте этот объект только тогда, когда он будет использоваться.
Например:
String prefix = "gebi";
Заменить на:
if ("laowang" .equals (name)) {string prefix = "gebi";5. Избегайте использования попробуйте ... поймать в петлях, используйте попробуйте ... поймать вне цикла
6. Попробуйте ... поймать не должно быть слишком большим.
Не ставите весь бесполезный код, то есть исключение не будет брошено в блок Try ... поймайте блок и уменьшите размер блока кода Try ... поймать код.
Убедитесь, что читаемость, техническое обслуживание и надежность кода.
7. Старайтесь не создавать ссылки на объекты в цикле.
Особенно, когда объем циркуляции большой.
while (i <1000) {object = new Object ();Рекомендуется изменить его на:
Object Object = null;
Каждый раз, когда New Object () является новым, ссылка объекта объекта указывает на объект объекта.
Например, когда есть много циклов, первый тип, JVM создаст 1000 ссылок на объекты, в то время как второй тип имеет только один ссылку на объект объекта в памяти. Это значительно сохраняет пространство памяти.
8. Не используйте статические переменные по желанию.
Когда на объект ссылается переменная, объявленная статикой, коллектор мусора Java не очистит память кучи, занятую объектом.
Хиповая память, занятая статической переменной, не выпускается до тех пор, пока не будет расположена переменная. То есть статический жизненный цикл переменной = жизненный цикл класса.
9. Не создавайте некоторые неиспользованные объекты и не импортируйте некоторые неиспользованные классы.
10. Используйте буферные потоки ввода -вывода:
Буферные потоки ввода -вывода могут значительно повысить эффективность ввода -вывода. BufferedWriter, BufferedReader, BufferedInputStream, BufferedOutputStream.
11. Преобразование данных класса обертывания в строки для использования: ToString
Целое число I = 1;
Скорость ранжирования метода преобразование данных класса обертки в строку:
i.toString> string.valueof (i)> "" + i
12. Map Traversal Эффективность: набор входа> Кейзет
// intrySet () для (entry <String, string> intry: map.EntrySet ()) {string key = intry.getKey (); : " + value);} // Сравнение вверх и вниз // keyset () for (string key: map.keyset ()) {string value = map.get (key); system.out.println (key +": " + value);}13. О сборнике сбора итератора и Foreach ().
Введение в алгоритм говорится: алгоритмы предназначены для повышения эффективности пространства и эффективности времени. Но часто время и пространство не могут сосуществовать.
Эффективность времени: итератор> foreach ()
Почитаемость кода: foreach ()> итератор
// uterator set <intry <string >> intrySet = map.EntrySet (); String> intry = iter.next ();
контраст:
// foreach () for (intry <string> intry: map.endryset ()) {string key = intry.getkey (); : " + value);}Лично я считаю, что рекомендуется использовать итератор для прохождения сбора при обработке больших данных.
Однако для малой обработки данных Foreach () по -прежнему используется для читаемости и последующего обслуживания.
Оба должны быть освоены при их использовании в комбинации.