За пределами профилировщиков: изучение альтернативных методов оптимизации производительности
В своей презентации «Тревога производительности» Джошуа Блох подчеркнул ограничения профилировщиков и их потенциальная неточность. Однако возникает вопрос: какие еще варианты оптимизации производительности у нас есть? Должны ли мы вернуться к нашим инстинктам и догадкам?
Вывод, сделанный в цитируемой статье Блоха «Оценка точности профилировщиков Java», заключается в том, что профилировщики могут быть ненадежными из-за проблем с некорректностью. Однако это не делает все методы профилирования неэффективными.
Устранение эффекта наблюдателя и точности профилирования
Эффект наблюдателя означает возможность профилировщика влиять на поведение анализируемая программа. Крайне важно свести к минимуму этот эффект, используя профилировщики, которые не нарушают выполнение программы, например профилировщики на основе выборки, которые собирают данные через случайные промежутки времени.
За пределами выборки: некоррелированная выборка и анализ стека вызовов
Для повышения точности профилирования крайне важно, чтобы механизм выборки был действительно случайным и независимым от состояния программы. Кроме того, профилировщик должен записать стек вызовов функций, чтобы определить, какие операторы были активны во время выборки. Это позволяет точно определить местонахождение узких мест в производительности.
Отчетность по строкам, а не по функциям
Традиционные профилировщики часто сообщают данные по функциям, что может затруднить выявление определенные строки кода, отвечающие за проблемы с производительностью. Чтобы решить эту проблему, профайлеры должны предоставлять отчеты, в которых разбивается вклад каждой строки кода в производительность, что позволяет проводить более детальную оптимизацию.
Точность измерения и точность определения местоположения
Вместо того, чтобы сосредотачиваться в первую очередь на точности измерений времени, более важно уделить приоритетное внимание точности определения местоположения проблемы. Определив области кода, которые вносят значительный вклад в снижение производительности, можно точно нацелить оптимизацию, даже если отдельные измерения могут иметь некоторую степень статистической вариации.
Практический подход к настройке производительности
При настройке производительности нет необходимости количественно определять точный вклад каждой проблемы перед ее устранением. Вместо этого более эффективно выявлять и решать проблемы итеративно. По мере решения каждой проблемы процент оставшихся проблем становится больше, что упрощает их обнаружение и решение.
Вывод
Хотя у профилировщиков есть свои ограничения, есть и свои ограничения. альтернативные подходы к оптимизации производительности. Используя методы выборки, которые минимизируют эффект наблюдателя, анализируя стек вызовов функций, сообщая данные построчно и сосредотачиваясь на местонахождении проблемы, а не на точных измерениях, разработчики могут эффективно выявлять и устранять узкие места в производительности.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3