2011-11-02 2 views
0

코드 품질을위한 다양한 도구가 있습니다. 그러나 코드가 대구 품질 규칙에 해당하지 않는 경우에도 때로는 이득 성능이 필요합니다. 일부 오픈 소스 도구가 있습니까? 감사합니다. .자바 코드 성능 분석 도구

+0

이 질문을 일부 확장하고 싶을 수도 있습니다. 프로파일 링하려는 응용 프로그램에 대한 간략한 설명을 제공하십시오. 예를 들어, 애플리케이션의 IO가 많으면 성능상의 이득이 코드에서 발생하지 않을 수 있습니다. 이것은 매우 광범위한 주제입니다. 질문에 대한 자세한 내용을 제공하면 다른 사람들이 성능 튜닝에서 성공한 방법에 대한 정보를 얻을 수 있습니다. – Sean

답변

2

그러나이 도구는 없지만 jVisualVM을 사용해 볼 수 있습니다.

http://download.oracle.com/javase/6/docs/technotes/tools/share/jvisualvm.html

그것은 일반적으로 JDK와 함께 제공됩니다. @C:\Program Files\Java\jdk1.6.0_21\bin

+0

Visual VM을 좋아하지만 코드가 성능 또는 "cod"[sic] 품질 규칙에 어떤 영향을 미치는지 알려주지 않습니다. 그것은 당신에게 기억, CPU 등을 보여줄 것이지만 만약 당신의 측정이 차선책이라면 당신이 무엇을해야할 지 알려주지 않을 것입니다. JVM에 번들 된 플러그인이 아닌 모든 플러그인이 설치된 버전 1.3.2를 가져 오는 것이 좋습니다. – duffymo

0

성능과 품질을 나타내는 도구가 없습니다. 둘 다 측정하기가 어렵습니다.

코드를 검사하기 위해 FindBugs 나 IntelliJ 's Inspector와 같은 것을 사용할 수는 있지만 규칙 위반을 찾습니다. 나쁘게 수행하는 코드를 작성했을 때 지적 할 도구를 알지 못합니다. Java 코드 관리자는 데이터베이스에 인덱스가 없다는 것을 어떻게 알 수 있습니까?

+1

빨간색 질문이 나쁘거나 과목을 모른다. 내 충고는 자바 성능 튜닝에 대한 책을 읽으십시오. 또한 예 : PMD는 성능 팁을 제공합니다. – user810430

+0

성능을 측정하는 것이 어렵지 않을 수도 있습니다. 그러나 성능을 향상시키는 것은 어렵지 않습니다. (http://stackoverflow.com/questions/266373/one-could-use-a-profiler-but-why-not-just -halt-the-program/317160 # 317160). –

+0

그리고 이것은 오픈 소스 도구로 무엇을 도와 드릴까요? 귀하의 요점은 정확합니다; 나는 그 질문이 가난하다고 생각한다. – duffymo

0

코드 품질과 관련하여 답변을 드릴 수 없습니다. 다른 사람 수 있습니다. 그러나 "성능 향상이 필요"하다고 생각할 때 사용하는 도구를 알려주는 것보다 오히려이를 수행하는 방법을 알려줄 것입니다.

도구가 있지만 도구보다 더 중요한 것은 수행중인 작업을 이해하는 것입니다. 가장 중요한 것은 측정이 성능 향상을 위해 무엇을 수정해야하는지 알려주지 않는다는 것을 이해하는 것입니다. 얼마나 많은 개선이 있었는지를 알려줍니다.

성능을 개선하는 방법은 시간의 상당 부분을 차지하고 을 향상시킬 수 그들이 어떤 활동을 찾을 하는 것입니다. 측정 값을 찾을 수 없습니다. 예 :

내가 여러 번, sample the state of a program 수동으로 할 수있는, 등 가져 오는 요소, 끝 조건에 대한 테스트, 같은 컨테이너 클래스의 조작을하고 시간이 많이 볼 (즉, 부분을 찾는 입니다.) 이를 코드의 많은 다른 장소에서 일어날 수 있으므로 특정 루틴은 많은 시간을 소비하는 것으로 나타나지 않습니다. 특별한 핫스팟이나 확실한 병목 현상은 없습니다. "알고리즘이 잘못되었습니다"또는 "느린 루틴"이 없습니다. 사람들이 찾는 것의 종류입니다. 그럼에도 불구하고 그 몇 가지 샘플에서 컨테이너 클래스 작업을 수행하고 있으며 정확히 어디에서 볼 수 있는지 알 수 있습니다. 그 컨테이너 클래스 작업을 동일한 목적을 달성하는 다른 작업으로 대체 할 수 있으므로 시간을 절약 할 수 있습니다. 시간이 얼마나 걸립니까? 대략 시간의 일부에 이르기까지 나는 그러한 작업이 일어나는 것을 보았고, 그것은 꽤 클 수 있습니다.

이렇게하는 것에 대한 실질적인 보상은 여러 가지 문제가있을 수 있습니다. 문제 A가 40 %의 비용을, B의 비용이 20 %이고 C의 비용이 10 %이고 이고 총 시간이 10 초라고 가정합니다. 가장 확실한 A 뒤에옵니다. 고정하면 약 6 초가 소요됩니다. (스피드 업 10/6 = 1.67). 그러면 문제 B는 더 큰 시간 비율 (2/6 = .33)을 취하므로 샘플을 찾는 것이 더 쉽습니다. 시간을 4 초로 단축시킵니다. (Speedup 6/4 = 1.5) C는 (1/4 = 25 %) 이전보다 훨씬 쉽게 찾을 수 있습니다. 제거하면 시간이 3 초 (속도 향상 4/3 = 1.33)가됩니다. 총 속도 향상 요소는 10/3 = 3.33입니다. 각 스피드 업의 복합 제품으로 볼 수 있습니다 : 10/6 * 6/4 * 4/3 = 10/3.

여기서는 숫자를 다루고 있지만 이들 중 어느 것도 현지화 된 코드 조각에서 보낸 시간을 측정하지 않아도됩니다. 그들은 프로그램이 수행 한 세부 샘플의 소수에서 일어난 일을 설명하는 것으로부터 얻은 대략적인 견적이었습니다. 샘플은 실제로 측정과 관련이 없습니다. 그들은 과 관련된 문제를에 노출 시켰습니다.