3

자바 프로그램/프로그램 부분의 속도를 조 절할 수있는 합리적인 기회를 찾으려고합니다. 두 가지 방법 중 빠르게 실행하는 방법을 테스트합니다. 두 방법 중 하나를 주석 처리하고, 실행 시간을 결정한 다음 마지막으로 시간을 비교하십시오. JVM 모니터 : I라는 이클립스에 통합 된 자바 프로파일을 시도했습니다 일식 산소이클립스에서 속도 측정하기, 실행 시간, 실행 시간

public long getTime() { 
    return System.currentTimeMillis(); 
} 

: 내가 좋아하는 내 프로그램에 어떤 코드를 사용하지 않습니다.

하지만 난 단지 예를 들어 CPU의 복잡한 세부 사항을 얻습니다. 및 기타 정보, 실제로 내 메서드의 실행 시간에 속하지 않습니다. 또는 나는 무엇인가 간과했다.

아마도 이클립스의 또 다른 플러그인 마켓 플레이스가 더 유용하고 실행 시간에만 집중할 수 있습니까? 오픈 JDK에서

+0

코드를 원하지 않으면이 질문에 플래그가 지정됩니다. – MacStevins

답변

0

JMH (Java Microbenchmark Harness) 당신의 요구 사항을 충족해야합니다

JMH 실행하고, JVM을 표적으로 나노 자바로 작성된/마이크로/밀리/매크로 벤치 마크 및 다른 언어 을 분석, 건물을위한 자바 하네스입니다.

JMH 벤치 마크를 실행하는 권장 방법은 Maven을 사용하여 응용 프로그램의 jar 파일에 따라 달라지는 독립형 프로젝트 을 설정하는 것입니다. 이 방법은 벤치 마크가 올바르게 으로 초기화되고 신뢰할 수있는 결과를 얻는 데 좋습니다. 기존 프로젝트 내에서 심지어 IDE 내에서 벤치 마크를 실행할 수 있지만 설정이 복잡하고 결과의 신뢰도가 낮습니다.

  • 이클립스 프로젝트 코드 당신을 만들 수있는 원형을 JMH-자바 벤치 마크 - 원형
  • 편집을 사용하여 Maven 프로젝트를 만듭니다

여기 JMH와 벤치마킹에 대한 간단한 접근 방식 벤치마킹하고 jar 파일을 빌드하려고합니다.

  • 터미널/명령 프롬프트에서 jar 파일을 실행하십시오. JMH는 그 일을하고 그 결과를 보여줄 것입니다.
  • 여기의 HashMap에 데이터를로드하는 몇 가지 사소한 주석 코드, 당신에게 더 나은 아이디어를 제공하려면 :

    import java.util.HashMap; 
    import java.util.concurrent.TimeUnit; 
    
    import org.openjdk.jmh.annotations.Benchmark; 
    import org.openjdk.jmh.annotations.BenchmarkMode; 
    import org.openjdk.jmh.annotations.Mode; 
    import org.openjdk.jmh.annotations.OutputTimeUnit; 
    
    public class MyBenchmark { 
    
        @Benchmark 
        @BenchmarkMode(Mode.AverageTime) 
        @OutputTimeUnit(TimeUnit.MILLISECONDS) 
        public void testMethod() { 
    
         HashMap<Integer, String> map = new HashMap<>(); 
    
         for (int i = 0; i < 1000; i++) { 
          map.put(i, "" + i); 
         } 
        } 
    } 
    

    그대로 JMH를 사용하는 데 필요한 모든 코드, 그리고 클래스 및 방법은 이미 있었다 메이븐 (Maven)에 의해 만들어졌다. 방금 Java의 주석과 네 줄을 제공했습니다.

    물론 JMH에서 유용한 정보를 얻는 것보다 훨씬 더 많은 것이 있지만 많은 온라인 자습서 중 하나를 따르면 15 분 내에 뭔가를 얻을 수 있습니다. Openjdk도 38 code samples을 제공합니다.