Scala / Java профилирование для отдельных пакетов - PullRequest
2 голосов
/ 28 октября 2011

Я недавно обнаружил, что написанная мною программа на удивление медленная, и в попытке ее исправить я бы хотел ее профилировать. До сих пор я выбирал Yourkit и hprof, но я так и не смог найти нужную функциональность.

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

Если вышесказанное невозможно, я хотел бы иметь возможность выполнять профилирование стиля hprof cpu = samples, но вместо того, чтобы выплевывать список ВСЕХ методов всех классов, выполняемых в проекте, я хотел бы быть в состоянии исключить пространства имен (например: java. , scala.collection. ) и иметь возможность в любое время приписать эти методы для повторного присвоения нижнему уровню в стеке, где метод был вызван NOT в исключенном пространстве имен , Например, если у меня есть что-то вроде следующего

def sillyMethod: Unit = {
   0.until(1000000).map{ i => 
      (0 until 1000).toSeq + 1) ==  ( 0 until 1000).toSeq + 2 )
   }
}

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

РЕДАКТИРОВАНИЕ : в настоящее время я использую sbt для выполнения своих команд и IntelliJ IDEA для фактического редактирования.

Ответы [ 2 ]

3 голосов
/ 28 октября 2011

Я не очень давно смотрел на yourkit, но был бы удивлен, если бы его профилировщик не смог исключить пакеты или ограничить профилированные пакеты. JVM на самом деле поставляется с профилировщиком, который не так уж и плох. visualvm входит в комплект поставки jdk. Обратите внимание, что на втором снимке экрана на странице профилирования внизу есть раздел «только профильные классы», поэтому, если вы поместите туда только свой пакет, вы больше ничего не профилируете или можете углубиться только профильные пакеты или классы.

2 голосов
/ 28 октября 2011

JProfiler имеет граф вызовов, который может работать на уровне агрегации классов и пакетов.

enter image description here

И если вы укажете свои пакеты верхнего уровня в настройках сеанса, вы не увидите никаких внутренних элементов классов Scala.

enter image description here

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

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