import ( "코딩", "행복", "즐거움" )

메모리 절약 패키지, fieldalignment 사용 본문

GO

메모리 절약 패키지, fieldalignment 사용

더코드마니아 2022. 10. 3. 17:21

게임서버 개발자라면 다들 아실만한 "최흥배" 님이 

서버 개발자 커뮤니티 페이스북에서 공유 한 내용이다. 

원문은 일본 사이트 이다. 

 

원문: https://mattn.kaoriya.net/software/lang/go/20220127151742.htm

 

Big Sky :: Go の struct は小さくできる(fieldalignment のススメ)

システム開発屋がひっそり語るぼやき

mattn.kaoriya.net

 

예를 들어 내가 이런 코드를 작성했다고 치자

type MyData struct {
	f0 byte
	f1 int
	f2 float32
	f3 string
	f4 []int
	f5 map[string]string
}

위의 코드는 64bit시스템 기준  72byte 사이즈를 가지게 된다. 

 

수동으로 필드를 정렬 해서 메모리를 최적화 할 수 있지만, 

이를 자동으로 도와주는 패키지가 있다. 

 

바로 이름은 ... 

fieldalignment 

 

패키지 설치방법
go install golang.org/x/tools/go/analysis/passes/fieldalignment/cmd/fieldalignment@latest

 

실행방법
fieldalignment -fix .

 

실행 후 72byte 에서 64byte로 최적화 되었다. 

소스코드는 갱신 된다. 

type MyData struct {
	f5 map[string]string
	f3 string
	f4 []int
	f1 int
	f2 float32
	f0 byte
}

최적화 전과 후를 그림으로 표현하면 아래와 같다.

최적화 전 72 byte
최적화 후 64byte

좋은 정보를 항상 공유해주시는 "최흥배"님 감사합니다 

'GO' 카테고리의 다른 글

GO 백엔드 개발자 학습 로드맵  (0) 2022.11.16
GO 디자인 패턴에 관심이 있다면 ??  (0) 2022.11.16
Golang 벤치마킹 함수 성능 개선  (0) 2022.11.15
pprof  (0) 2022.10.05
Go 필드 정렬해서 메모리 절약하기  (0) 2022.10.03