Профилировщик производительности для JAVA-приложения

Я должен оптимизировать JAVA-приложение. Это делает некоторые вызовы третьего лица. Мне нужен некоторый хороший инструмент для точного измерения времени, потраченного отдельными вызовами API. Для давания общее представление о сложности - приложение берет файл источника данных, содержащий 1 миллион строк, и требуется приблизительно один час для завершения обработки. Как часть обработки, это делает некоторые вызовы третьего лица (включая некоторые сетевые вызовы). Я должен определить, какие вызовы занимают больше времени затем другие, и на основе этого, узнают способ оптимизировать приложение.

Любые предложения ценились бы.

25
задан Varun Achar 25 April 2015 в 03:30
поделиться

7 ответов

Я могу порекомендовать JVisualVM . Это отличный инструмент для мониторинга / профилирования, который входит в комплект Oracle / Sun JDK. Просто запустите его, подключитесь к своему приложению и начните профилирование процессора. Вы должны получить отличные гистограммы того, на что потрачено время.

Начало работы с VisualVM содержит отличный скринкаст, показывающий, как с ним работать.

Снимок экрана:

VisualVM screenshot


Еще одна более примитивная альтернатива - использовать параметр командной строки -Xprof :

-Xprof

Профилирует запущенную программу и отправляет данные профилирования в стандартный вывод. Эта опция предоставляется как утилита, которая полезен при разработке программ и не предназначен для использования используется в производственных системах.

28
ответ дан 28 November 2019 в 21:05
поделиться

Похоже, что обычный профилировщик может оказаться неподходящим инструментом в этом случае, поскольку он ориентирован на измерение времени процессора, затрачиваемого профилируемой программой, а не на внешние API-интерфейсы, которые она вызывает, и они, как правило, требуют больших затрат времени. накладных расходов и сбора большого количества данных, которые, вероятно, перегрузят вашу систему, если оставить ее работать в течение длительного времени.

Если вам действительно нужно собирать данные о производительности за такое долгое время, и в основном для внешних вызовов, то Perf4J , вероятно, лучший инструмент.

1
ответ дан 28 November 2019 в 21:05
поделиться

В нашем офисе мы ежедневно используем профилировщик YourKit. Он действительно легкий и подходит для большинства случаев использования, связанных с производительностью, которые у нас были.

Но я также использовал Visual VM. Это бесплатно и быстро. Вы можете сначала попробовать Visual VM, прежде чем переходить к YourKit (YourKit не является бесплатным).

1
ответ дан 28 November 2019 в 21:05
поделиться

visualvm (часть SDK) и Java 7 могут производить подробное профилирование.

0
ответ дан 28 November 2019 в 21:05
поделиться

Я использую профилировщик в NetBeans (он действительно великолепен и уже встроен, нет необходимости устанавливать подключаемый модуль) или JVisualVM , когда NetBeans не используется.

0
ответ дан 28 November 2019 в 21:05
поделиться

Я использовал YourKit несколько раз, и мне это очень понравилось. Однако я никогда не описывал длительную операцию.

Одинакова ли обработка для каждой строки? В этом случае размер входного файла не имеет значения. Вы можете профилировать подмножество, чтобы выяснить, какие звонки стоят дорого.

7
ответ дан 28 November 2019 в 21:05
поделиться

Попробуйте программный продукт OPNET Panorama

2
ответ дан 28 November 2019 в 21:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: