GO · 성능
맵 사전 할당
make(map[K]V, hint)로 맵의 초기 크기를 지정하여 해시 테이블 리사이징을 줄입니다.
성능중급mappreallochinthash-table
핵심 설명
make(map[K]V, hint)로 맵의 초기 크기를 지정하여 해시 테이블 리사이징을 줄입니다.
Go code
package main
import (
"fmt"
"testing"
)
func mapWithoutHint(n int) map[int]int {
m := make(map[int]int) // 기본 크기
for i := 0; i < n; i++ {
m[i] = i * i
}
return m
}
func mapWithHint(n int) map[int]int {
m := make(map[int]int, n) // 크기 힌트
for i := 0; i < n; i++ {
m[i] = i * i
}
return m
}
func BenchmarkMapWithout(b *testing.B) {
for i := 0; i < b.N; i++ {
mapWithoutHint(10000)
}
}
func BenchmarkMapWith(b *testing.B) {
for i := 0; i < b.N; i++ {
mapWithHint(10000)
}
}
func main() {
m1 := mapWithoutHint(100)
m2 := mapWithHint(100)
fmt.Println("크기:", len(m1), len(m2))
// maps.Clone (Go 1.21+)
// import "maps"
// m3 := maps.Clone(m1)
fmt.Println("맵 사전 할당으로 리사이징 횟수 감소")
}학습 팁
맵 크기 힌트는 정확하지 않아도 됩니다. 대략적인 크기만 제공해도 리사이징이 크게 줄어듭니다.
주의할 점
맵의 크기 힌트는 용량이 아닌 버킷 수에 영향을 미칩니다. len(m)은 실제 요소 수를 반환하며 용량과 무관합니다.
자주 묻는 질문
맵 사전 할당란 무엇인가요?
make(map[K]V, hint) 로 맵의 초기 크기를 지정하여 해시 테이블 리사이징을 줄입니다.
맵 사전 할당 학습 시 주의할 점은 무엇인가요?
맵의 크기 힌트는 용량이 아닌 버킷 수에 영향을 미칩니다. len(m) 은 실제 요소 수를 반환하며 용량과 무관합니다.
Continue Learning
Go 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.