2013-03-06 2 views
8

Я использую JProfiler для анализа фрагмента кода Java, который вызывает собственный код C через JNI, и я получаю странные результаты из окна «Процессоры». В частности, информация на вкладке «Дерево вызовов» говорит мне, что метод Java, который вызывает собственный код, потребляет наибольшую долю времени выполнения, но вкладка «Горячие точки» даже не перечисляет этот метод вообще. Я также заметил аналогичную историю для классов org.joda.time, которые, как сообщается, имеют довольно большую долю процессора, но не сообщаются как «горячие точки», и мне интересно, если это происходит потому, что они тратят много времени на вызов исходный код преобразования даты.Правильно ли просматривается сценарий jprofiler «Hot Spot» для процессора, потребляемого собственным кодом, вызываемым через JNI?

Любое понимание этой проблемы будет оценено по достоинству.

EDIT: Я только что обнаружил очень тревожную академическую статью под названием «Оценка точности профилей Java» (я бы предоставил ссылку, но, похоже, сервер Университета Колорадо, на который ссылается результат Google для этого файла, очень несчастлив теперь мне пришлось извлечь копию из ссылки «Быстрый просмотр» Google. Я подозреваю, что проблема с собственными методами заключается в том, что они перечитываются, потому что их много, они короткие, и вызов, вероятно, приведет к пределу доходности; однако я не уверен, что то же самое относится к процедурам преобразования времени. Обратите внимание, что я получаю значительно разные результаты при использовании инструментального профилирования и профилирования сэмплирования для одного и того же тестового прогона, а результаты с инструментами лучше согласуются с моей интуицией. Я рекомендую бумагу всем, кто когда-либо обнаруживал, что они царапают головы по результатам профилирования. Все еще надеясь, что у кого-то будет больше информации об этом; «Профайлер ошибается» - не очень приятный результат.

EDIT 2: Похоже, colorado.edu уже налаживалась, вот ссылка: http://www-plan.cs.colorado.edu/klipto/mytkowicz-pldi10.pdf

ответ

2

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

То, что считается «неотъемлемым временем», зависит от того, как настроены ваши фильтры.

Для подробного объяснения см. this help topic.