PHpullh
학습 라이브러리/Go/벤치마크 심화

GO · 테스트

벤치마크 심화

testing.B로 함수 성능을 측정합니다. 메모리 할당량과 알고리즘 비교에 사용됩니다.

테스트중급benchmarkperformancebenchmemtesting

핵심 설명

testing.B로 함수 성능을 측정합니다. 메모리 할당량과 알고리즘 비교에 사용됩니다.

Go code

package main

import (
	"fmt"
	"strings"
	"testing"
)

// 문자열 연결 벤치마크 비교
func BenchmarkConcat(b *testing.B) {
	b.Run("Plus", func(b *testing.B) {
		for i := 0; i < b.N; i++ {
			s := ""
			for j := 0; j < 100; j++ {
				s += "x"
			}
		}
	})

	b.Run("Builder", func(b *testing.B) {
		for i := 0; i < b.N; i++ {
			var sb strings.Builder
			for j := 0; j < 100; j++ {
				sb.WriteString("x")
			}
			_ = sb.String()
		}
	})

	b.Run("Join", func(b *testing.B) {
		parts := make([]string, 100)
		for i := range parts { parts[i] = "x" }
		b.ResetTimer() // 준비 시간 제외
		for i := 0; i < b.N; i++ {
			_ = strings.Join(parts, "")
		}
	})
}

func main() {
	// go test -bench=. -benchmem -count=5
	fmt.Println("벤치마크: go test -bench=BenchmarkConcat -benchmem")
}

학습 팁

-benchmem 플래그로 할당 횟수와 크기를 확인하세요. b.ReportAllocs()도 동일한 효과입니다.

주의할 점

벤치마크 루프 밖에서 데이터를 준비하면 준비 시간이 포함됩니다. b.ResetTimer()로 타이머를 초기화하세요.

자주 묻는 질문

벤치마크 심화란 무엇인가요?

testing.B 로 함수 성능을 측정합니다. 메모리 할당량과 알고리즘 비교에 사용됩니다.

벤치마크 심화 학습 시 주의할 점은 무엇인가요?

벤치마크 루프 밖에서 데이터를 준비하면 준비 시간이 포함됩니다. b.ResetTimer() 로 타이머를 초기화하세요.

Continue Learning

Go 학습을 이어가세요

총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.