Профилирование только определенных частей / классов приложения Java - PullRequest
1 голос
/ 23 февраля 2012

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

Как я могу профилировать только часть Java-приложения, которое мне небезразлично? Есть ли способ сказать «только профилировать эти два класса» или программно вставить директивы «начать профилирование здесь»?

Ответы [ 3 ]

1 голос
/ 23 февраля 2012

Вы можете использовать VisualVM для профилирования вашего кода.Я не знаю только о профилировании определенных классов, но VisualVm может начать просмотр уже запущенных программ.Кроме того, если вы используете Eclipse, существует средство запуска, которое можно использовать для запуска и подключения профилировщика к вашей программе при запуске из Eclipse.

РЕДАКТИРОВАТЬ:
Iнемного посмотрел и на вкладке Профилировщик есть флажок Настройки.При выборе этого параметра будет отображаться текстовое поле, в котором вы можете настроить фильтры для классов, которые следует профилировать для использования ЦП.

0 голосов
/ 23 февраля 2012

Что касается профилирования только выбранных классов, большинство профилировщиков позволяют устанавливать фильтры, так что инструментируется только пара классов.

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

В JProfiler можно добавить триггер метода для нужного метода и добавить три действия к триггеру:

  • Начать запись (с выбранным процессором)
  • Дождаться окончания текущего события
  • Остановить запись (с выбранным процессором).

Посмотрите на этот экран , который показывает, как настроены триггеры.

Отказ от ответственности: Моя компания разрабатывает JProfiler.

0 голосов
/ 23 февраля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...