반응형
반응형

Zero allocation

 

Zero allocation이란?

"Zero allocation"은 프로그래밍에서 메모리 할당과 관련된 개념입니다. 이는 메모리 할당 없이 작업을 수행하거나 최소한의 메모리 할당만을 사용하여 높은 성능을 달성하기 위한 기술이나 접근 방식을 가리킵니다. 주로 고성능 및 실시간 시스템에서 중요한 역할을 합니다.

일반적으로 프로그램에서 메모리를 할당하거나 해제하는 작업은 비용이 많이 드는 작업 중 하나입니다. 메모리 할당은 시스템 호출이나 내부적인 자료구조 조작 등을 통해 이루어지며, 이로 인해 프로그램 실행 속도가 느려질 수 있습니다. 또한 메모리 할당을 빈번하게 하면 메모리 단편화가 발생할 수 있어 메모리 사용 효율도 저하될 수 있습니다.

 


원칙

사전 할당 (Preallocation): 프로그램 시작 시 미리 필요한 메모리를 할당하고, 이후에는 필요한 데이터를 재사용하거나 재할당하지 않는다. 이렇게 하면 메모리 할당 및 해제에 드는 오버헤드를 줄일 수 있습니다.
재활용 (Reusing): 이전에 할당한 메모리를 재활용하여 새로운 데이터를 저장하는 방식을 채택합니다. 즉, 메모리를 계속해서 재할당하지 않고 이미 할당된 메모리를 사용합니다.
스택 사용 (Stack Allocation): 가능한 경우 스택 메모리를 활용하여 메모리를 할당합니다. 스택 메모리 할당은 힙 메모리 할당보다 훨씬 빠르며, 스택 프레임 내에서 지역 변수 등을 할당하는 방식입니다.
불변성 (Immutability): 데이터를 불변 객체로 다루는 것을 선호합니다. 이로 인해 데이터의 복사본을 만들거나 변경할 필요가 없어지며, 메모리 할당을 줄일 수 있습니다.
객체 풀 (Object Pooling): 미리 할당한 객체 풀에서 객체를 가져와 사용하고 반환하는 방식으로 메모리 할당을 줄일 수 있습니다.
"Zero allocation"은 주로 고성능 게임 엔진, 실시간 그래픽 처리, 실시간 통신 시스템 등에서 사용되며, 높은 성능과 메모리 효율성을 유지하는 데 도움을 줍니다.

반응형
반응형
반응형

Go 패키지 외부 공개 여부

 

Go 패키지 외부 공개 여부

패키지에서 외부로 공개할 함수는 대문자로 시작하여 작성하며, 외부로 공개하지 않을 때는 소문자로 시작하여 작성해주면 됩니다.

반응형

'Golang > Let's Go' 카테고리의 다른 글

Go 에러로 인한 서버 다운 막는 방법  (0) 2023.08.28
Golang 속도 측정 방법  (0) 2023.08.28
Go smtp SendMail 기능 구현(기본 구현과 개선)  (0) 2023.08.24
Zero allocation  (0) 2023.08.10
go work 실행 함수  (0) 2023.08.09
반응형
반응형

 

 

go work 실행 함수

 

Code

> go work init
> go work use project-one
> go work use project-two

 

Troubleshooting

만약 go.work 파일을 만든 후 하면 go build 할 때 “current directory is contained in a module that is not one of the workspace modules listed in go.work. You can add the module to the workspace using:” 에러가 발생할 수 있습니다.

그럼 지우고 다시 go work init을 실행해준 후 다시 작업을 해주면 작동합니다.

또 다른 문제로 숫자 8을 추가 하려고 하는데 추가가 안되는 문제가 발생했습니다.

문제는 go 파일이 8 폴더 아래에 있는게 아니라 ./8/Lottery이 아래에 있어서 추가를 하지 않았던거 였습니다. 폴더 directory를 제대로 하고 use 함수를 사용하니 해결되었습니다.

 

반응형

'Golang > Let's Go' 카테고리의 다른 글

Go 에러로 인한 서버 다운 막는 방법  (0) 2023.08.28
Golang 속도 측정 방법  (0) 2023.08.28
Go smtp SendMail 기능 구현(기본 구현과 개선)  (0) 2023.08.24
Zero allocation  (0) 2023.08.10
Go 패키지 외부 공개 여부  (0) 2023.08.09

+ Recent posts