Я немного новичок в профилировании приложений для повышения производительности. Я выбрал YourKit в качестве моего профилировщика. Нет сомнений, что YourKit предоставляет очень интересную статистику. Где я застреваю, что делать с этой статистикой.
Например, рассмотрим метод, который работает с JAXB POJO. Метод перебирает POJO для доступа к тегу/элементу, глубоко вложенному в XML. Для этого требуется 4 слоя циклов for, чтобы добраться до элемента/тега, как показано ниже:
List<Bundle> bundles = null;
List<Item> items = null;
for(Info info : data) {
bundles = info.getBundles();
for(Bundle bundle : bundles) {
items = bundle.getItems();
//.. more loops like this till we get to the required element
}
}
YourKit говорит мне, что приведенный выше код является «горячей точкой», и 80 объектов получают сбор мусора при каждом вызове метода, содержащего этот код. Приведенный выше код — это всего лишь пример, а не единственная часть, где я застреваю. В большинстве случаев я понятия не имею, что делать с информацией, предоставленной профилировщиком. Что я могу сделать, чтобы уменьшить количество временных объектов в приведенном выше коде? Существуют ли четко определенные принципы улучшения производительности приложения? На какие статистические данные следует обращать внимание при профилировании приложения и какое значение имеет каждый вид статистических данных?
Изменить. Основной целью профилирования приложения является увеличение пропускной способности и времени отклика. Текущая пропускная способность составляет всего 10 процентов от требуемой пропускной способности!