Представьте, что у вас есть приложение командной строки, которое принимает входной файл и что-то делает с ним. Теперь представьте, что вы хотите попробовать/профилировать это приложение. Если бы это была Visual Studio, вы бы просто выбрали метод профилирования (выборка/контрольно-измерительная техника), и VS запустил приложение для вас и собирал данные, пока программа завершится. Но, насколько я вижу, в VisualVM нет аналогичной функциональности. Вы должны запустить свое приложение, а затем выбрать его в VisualVM, а затем явно начать выборку/профилирование. Проблема в том, что иногда выполнение программы с определенными входными данными занимает меньше времени, чем требуется для установки VisualVM. Кроме того, при таком подходе нет возможности для пакетного приложения профиля. Кто-то предложил запустить приложение в режиме отладки из Eclipse и установить точку останова где-то в начале метода main(). Затем настройте VisualVM и продолжите выполнение. Но у меня есть подозрение, что работа в режиме Debug vs Release сама по себе влияет на производительность. Предложения?Профилирование приложения с VisualVM
ответ
Для VisualVM 1.3.6 есть новый Startup Profiler plugin, который позволяет вам профилировать приложение из его запуска. См. Это article для получения дополнительной информации.
Если программа выполняет операции ввода-вывода, то сэмплер Visual Studio не увидит ввода-вывода, потому что это «процессорный пробоотборник» (даже если почти все время затрачено на ожидание ввода-вывода).
Если вы используете Instrumentation, вы не увидите никакой информации на линейном уровне, поскольку она суммируется только на уровне функции.
Я использую this technique.
Если программа работает слишком быстро, чтобы пробовать, просто поместите временный внешний цикл вокруг, скажем, 100 или 1000 итераций.
Разница между режимами отладки и освобождения будет почти ничего, если вы не потратите большую часть времени на плотные петли, в вашем коде, где циклы не содержат никаких вызовов функций, или если вы делаете которые выполняют большую проверку в библиотеках.
Если вы, то ваши образцы покажут вам, и вы узнаете, что Release сделает разницу в скорости.
Что касается пакетного профилирования, то я этого не делаю. Я просто слежу за общей пропускной способностью программы. Если есть некоторый ввод, который, кажется, заставляет его занять слишком много времени, то я делаю процедуру выборки в программе с этим входом, смотрю, в чем проблема, и исправляю ее.
- 1. VisualVM Профилирование приложения JavaFX
- 2. Профилирование приложения tomcat с VisualVM
- 3. Профилирование веб-приложения Tomcat с visualvm
- 4. Профилирование VisualVM - результаты загрязнения
- 5. Как подключить VisualVM и начать профилирование сразу с запуском приложения?
- 6. Профилирование памяти -VisualVM и Дева
- 7. Профилирование VisualVM зависает при использовании классов управления
- 8. Вкладка VisualVM Профилирование отсутствует на сервере Tomcat
- 9. Работает ли профилирование профилей VisualVM на Mac?
- 10. Ошибка запуска VisualVM
- 11. VisualVM для профилирования приложения, работающего на Tomcat
- 12. VisualVM не может выполнить профилирование под Windows XP
- 13. знак доллара в VisualVM
- 14. Профилирование приложения ember js
- 15. Jprobe Профилирование java-приложения
- 16. Профилирование приложения Java Spring
- 17. Профилирование кода приложения VSTO
- 18. Профилирование искрового приложения scala
- 19. как профилировать запуск приложения с помощью visualvm
- 20. Профилирование приложения Java EE
- 21. Профилирование Калибровочные приложения
- 22. Профилирование приложения Mule ESB
- 23. Как выполнить профилирование приложения Java, завершенного как .exe?
- 24. VisualVM эквивалент для Python
- 25. Профилирование сервлета
- 26. Профилирование Lucene в Nutch
- 27. Анализ и профилирование многопоточного приложения
- 28. Профилирование g ++ приложения на MacOSX?
- 29. IBM RAD - Профилирование приложения EAR
- 30. Профилирование памяти приложения C# с помощью COM