2011-10-28 6 views
2

필자가 작성한 프로그램이 놀랍도록 느린 것으로 밝혀졌으며이를 해결하기 위해 프로필을 작성하려고합니다. 지금까지 나의 도구는 Yourkit과 hprof 였지만 아직 내가 추구하는 기능을 찾지 못했습니다.특정 패키지 용 스칼라/자바 프로파일 링

이상적으로 모든 소스 파일에 대해 MATLAB Profiler style heat-map을 사용하고 싶습니다. 색상이 강하면 그 라인에 더 많은 시간이 소요되었음을 나타냅니다. 나는 이것이 많이 묻는 것을 깨닫는다. 그래서 그것이 존재하지 않는다면 나는 놀라지 않을 것이다.

위와 같이 할 수 없다면 hprof cpu = samples 스타일 프로파일 링을 수행 할 수 있지만 프로젝트에서 실행되는 모든 클래스의 모든 메소드 목록을 뱉어내는 대신 (예 : Java. , scala.collection.)를 제외하고 예외가 제외 된 메서드에서 호출 된 스택의 가장 낮은 수준에 다시 할당되는 메서드에 기여한 시간을 가질 수 있습니다. 예를 들어, 나는 차라리 내 모든 시간이 sillyMethod에서,하지 Seq.equals에 소요되는 것을 알 것입니다 다음

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

같은이있는 경우. 사용 가능한 프로파일 러를 사용하여이 작업을 수행 할 수 있습니까?

EDIT : 현재 실제 편집을 위해 내 명령과 IntelliJ IDEA를 실행하기 위해 sbt를 사용하고 있습니다.

답변

3

저는 오랫동안 당신의 킷을 보지 않았지만, 프로파일 러가 패키지를 제외하거나 프로파일 링 된 패키지를 제한 할 수 없다면 놀랄 것입니다. JVM은 실제로 그렇게 나쁘지 않은 프로파일 러와 함께 제공됩니다. visualvm은 jdk에 포함되어 있습니다. profiling page의 두 번째 스크린 샷에는 "프로필 전용 클래스"라는 제목의 섹션이 있습니다. 따라서 패키지 만 넣으면 다른 프로필을 만들지 않거나 특정 패키지 나 클래스 만 프로파일 링 할 수 있습니다.

2

JProfiler에는 클래스 및 패키지 집계 수준에서 작동 할 수있는 콜 그래프가 있습니다. 당신이 세션 설정에서 최상위 패키지를 지정하는 경우

enter image description here

, 당신은 스칼라 클래스의 내부를 볼 수 없습니다.

enter image description here

면책 조항 : 우리 회사가 JProfiler와

개발