>  기사  >  Java  >  【번역】Java 벤치마크 테스트 작성 경험

【번역】Java 벤치마크 테스트 작성 경험

巴扎黑
巴扎黑원래의
2017-06-26 09:15:551381검색

때때로 간단한 성능 테스트 코드를 작성해야 할 때도 있고, 환경의 영향을 최대한 보호하기 위해 벤치마크 테스트를 작성하는 방법에 대한 경험담을 우연히 보게 되었습니다.

번역 및 게시 위치:

Java HotSpot 작성자의 마이크로벤치마크 작성 팁:

규칙 0: JVM 및 마이크로벤치마크에 대한 좋은 논문을 읽어보세요. 예를 들어. 이러한 테스트에 대해 높은 기대를 갖지 마십시오. JVM 성능에 대한 제한된 척도만 제공합니다.

규칙 1: 모든 초기화 및 컴파일이 트리거될 때까지 실행되는 준비 단계를 항상 포함하세요. (준비 단계의 반복 횟수는 줄어들 수 있으며 경험상으로는 수만 루프입니다.)

규칙 2: 항상 -XX:+PrintCompilation, -verbose:gc 등과 같은 매개변수를 사용하여 실행하세요. ., 이는 JVM의 컴파일 단계 및 기타 측면을 결정합니다. 섹션이 타이밍을 맞출 때 예상치 못한 작업을 수행합니까?

규칙 2.1: 타이밍 및 워밍업 단계의 시작과 끝에서 메시지를 인쇄하여 타이밍 중에 규칙 2의 출력이 있는지 확인할 수 있습니다.

규칙 3: -client와 -server의 차이점, OSR과 일반 어셈블리의 차이점을 이해하세요. -server가 -client보다 낫고, 일반 컴파일이 OSR

보다 낫습니다. 규칙 4: 초기화의 영향에 주의하고, 테스트 클래스 로딩 프로세스 중이 아닌 이상 처음으로 결과를 인쇄하지 마세요. 규칙 2는 다음과 같습니다. 이 효과적인 방어선에 맞서 싸우는 첫 번째 방법입니다.

규칙 5: 컴파일러 최적화 및 재컴파일의 효과에 유의하세요. 타이밍을 정할 때 코드 경로를 사용하지 마십시오. 컴파일러는 경로가 전혀 사용되지 않아 코드를 폐기하고 다시 컴파일할 수 있다는 낙관적인 가정을 기반으로 최적화할 수 있습니다. 규칙 2는 이 효과에 대한 첫 번째 방어선입니다.

규칙 6: 적절한 도구를 사용하여 컴파일러의 작업을 읽고 그로부터 놀라운 코드를 생성하는 작업을 훌륭하게 수행하세요. 무엇이 일을 더 빠르게 또는 느리게 만드는지에 대한 이론을 형성하기 전에 코드를 직접 확인하십시오.

규칙 7: 측정 시 노이즈를 줄입니다. 조용한 시스템에서 벤치마크를 실행하고 몇 번 실행하여 이상값을 삭제합니다. -Xbatch를 사용하여 애플리케이션과 함께 컴파일러를 직렬화하고, 컴파일러가 자체적으로 병렬로 실행되는 것을 방지하려면 -XX:CICompilerCount=1을 설정하는 것을 고려하십시오.

규칙 8: 벤치마킹에 일부 라이브러리를 사용하면 더 효율적일 수 있습니다. JMH, Caliper, Java용 UCSD 벤치마크 등

위 내용은 【번역】Java 벤치마크 테스트 작성 경험의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.