GO의 내장 테스트 패키지는 벤치마킹 코드를위한 강력하고 간단한 메커니즘을 제공합니다. 벤치 마크는 testing.b
유형을 사용하는 함수이며, 이는 코드의 실행 및 결과를보고하는 방법을 제공합니다. 벤치 마크를 만들려면 *testing.b
를 인수로 취하는 함수를 작성합니다. testing.b
유형은 bn
필드를 제공하며, 이는 벤치 마크 함수를 실행 해야하는 횟수를 나타냅니다. bn
값은 go test
명령에 의해 자동으로 조정되어 통계적으로 유의 한 결과를 찾습니다. 벤치 마크 함수 내에서 일반적으로 bn
시간을 반복하는 루프를 사용하여 벤치 마크하려는 코드를 실행합니다.
간단한 예는 다음과 같습니다.
<code class="go"> 패키지 mypackage import & quot; testing & quot; func add (x, y int) int {return xy} func benchmarkadd (b *testing.b) {for i : = 0; 나는 & lt; BN; i {add (1, 2)}} </code>
이 벤치 마크를 실행하려면 mypackage_test.go>라는 파일에 저장 한 다음 명령 <code>를 실행합니다. 이렇게하면 패키지 내의 모든 벤치 마크 기능이 실행됩니다.
효과적인 벤치 마크를 작성하려면 정확성과 신뢰성을 보장하기 위해 신중한 고려가 필요합니다. 몇 가지 주요 모범 사례는 다음과 같습니다.
GO TEST
명령은 벤치 마크를 여러 번 실행하여 시스템 성능에 대한 임의의 변형의 영향을 줄입니다. 통계적으로 의미있는 결과를 얻을 수있는 벤치 마크가 충분히 실행되는지 확인하십시오. -count
플래그를 사용하여 반복 횟수를 지정할 수 있습니다. go test -bench =. 출력은 일반적으로 벤치 마크 이름, 반복 횟수 (<code> n
), 총 시간 및 반복 당 시간 (종종 나노초로 표시)을 보여줍니다. 예 :
이 라인은 벤치 마크드
기능이 10 억 번 실행되었음을 나타냅니다 ( n = 100000000
). "-8"은 벤치 마크가 8 코어 머신에서 실행되었음을 나타냅니다.
ns/op
(작업당 나노 초) 값에주의를 기울입니다. 이 메트릭은 코드의 성능을 직접 반영합니다. 낮은 값은 성능 향상을 나타냅니다. 다른 벤치 마크에서 ns/op> 값을 비교하면 다양한 접근 방식 또는 코드 최적화의 상대적 성능을 평가할 수 있습니다.
몇 가지 일반적인 함정은 벤치 마크 결과를 부적절하거나 오도하는 벤치 마크로 이어질 수 있습니다. 쓰레기 수집기는 특히 자주 할당이있는 벤치 마크에서 성능에 크게 영향을 줄 수 있습니다. 잠재적 영향을 알고 할당을 최소화하려고 노력하십시오. pprof
와 같은 도구를 사용하면 쓰레기 수집이 성능에 영향을 미치는 영역을 식별하는 데 도움이 될 수 있습니다.
-gcflags = "-m & quot;
와 같은 컴파일러 플래그 사용을 고려하십시오. testing.b
의 타이밍 기능을 사용하십시오. 이러한 모범 사례를 따르고 일반적인 함정을 피하면 GO 코드의 성능에 대한 귀중한 통찰력을 제공하는 정확하고 의미있는 벤치 마크를 작성할 수 있습니다.
.위 내용은 내 코드를 벤치마킹하기 위해 Go의 테스트 프레임 워크를 어떻게 사용하려면?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!