Go의 놀라운 메모리 할당 함정: 30% 성능 저하 이야기

2025-04-21
Go의 놀라운 메모리 할당 함정: 30% 성능 저하 이야기

Go 프로젝트에서 무해해 보이는 리팩토링이 30%의 성능 저하를 초래했습니다. 원인은 `ImmutableValue` 구조체의 `GetBytes` 메서드였는데, 값 수신기를 사용했기 때문에 매번 힙 할당이 발생했습니다. 힙 할당은 스택 할당보다 훨씬 비쌉니다. 근본 원인은 Go 컴파일러의 이스케이프 분석의 부정확성으로, 값 수신기가 이스케이프되지 않음을 인식하지 못했기 때문입니다. 포인터 수신기로 변경하여 문제를 해결했습니다. 이 사례는 Go 컴파일러의 메모리 할당 결정을 이해하고 적절한 수신기 유형을 사용하는 것이 얼마나 중요한지를 보여줍니다.

개발