https://dev.to/mfbmina/go-124-benchmark-tests-439b
Go 언어에서는 go test -bench .
명령으로 벤치마크 테스트를 지원하고 있습니다.
위 블로그 글에서 1.24 버전부터 변경된 벤치마크 테스트 작성 방식을 설명하고 있습니다.
기존에는 테스트 실행 루프를 직접 작성해야 했고, 컴파일러가 테스트를 최적화하여 정확성을 떨어뜨릴 수 있었습니다. 이를 방지하기 위해 반환값을 글로벌 변수로 저장하는 추가 작업이 필요했습니다.
하지만 새로운 Go 버전에서는 b.Loop()
메서드만 사용하면 간소화된 문법으로 신뢰성 높은 벤치마크를 작성할 수 있습니다.
벤치마크 테스트 결과에서도, 이전 버전의 최적화된 방식보다 새로운 방식이 더 정확한 성능을 보여줍니다.
아래는 블로그 글에 작성되어 있는 벤치마크 결과 예시입니다.
goos: darwin
goarch: arm64
pkg: github.com/mfbmina/poc
cpu: Apple M2
Benchmark_FatorialLoop-8 39609032 30.50 ns/op
Benchmark_FatorialLoopWithoutCompilerImprovements-8 22448245 53.18 ns/op
Benchmark_FatorialRecursive-8 1870860 574.9 ns/op
Benchmark_FatorialRecursiveWithoutCompilerImprovements-8 1984813 560.1 ns/op
Benchmark_FatorialLoop_1_24-8 22177114 53.88 ns/op
Benchmark_FatorialRecursive_1_24-8 2151256 556.8 ns/op
PASS