[C#] 오브젝트 풀링과 스택

Learning 

When: 1학년 4월 29일

 

How:

학교 수업에서 Object Pooling이라는 최적화 방법을 배웠습니다. 그리고 최근에는 GameObject 배열로 정했던 오브젝트 Pooling을 Stack 형식으로 바꾸는 방법을 배우게 되었습니다. 책에서 본 적은 있었지만, 실제로 사용해본 적은 없었기에 좋은 공부가 되었습니다.

 

Understanding:

일단 Stack이란 배열의 친척 같은 존재인데, 실제 Heap과 Stack에 나오는 Stack처럼 아래에서 위로 쌓이는 형태로 데이터를 적재하여 특정 상황에서 사용하는 자료구조입니다.

Stack을 사용하려면 System.Collections.Generic을 선언하여 컬렉션을 사용할 수 있게 해야 합니다.

 

Stack은
private Stack<담을 형식> 변수이름 = new Stack<담을 형식>();
과 같은 형태로 변수를 선언하고 할당할 수 있습니다.

스택은 배열과 달리 크기가 계속 커질 수 있기 때문에 따로 크기를 정할 필요가 없다는 장점이 있습니다.

 

Stack은 변수명.Push(넣을 값); 으로 값을 쌓고, 변수명.Pop(); 으로 맨 위의 값을 빼낼 수 있습니다.
이때 Pop으로 빼낸 값을 변수에 할당하여 사용할 수 있습니다.

 

Pooling에서 이 Stack을 활용하면 좋은 점이 있습니다.
원래 배열로 Pooling할 때는, 배열에서 꺼낸 오브젝트가 사용 가능한지 확인하는 과정이 필요합니다.
하지만 Stack을 사용하면 사용 가능한 오브젝트는 항상 밖에 빠져나와 있기 때문에, 필요할 때마다 꺼내서 사용할 수 있습니다.

또한 Stack은 처음에 크기를 딱 정해놓고 오브젝트를 모두 채워둘 필요 없이, 필요할 때마다 만들어서 넣고, 꺼내서 쓸 수 있기 때문에 훨씬 간편합니다.

 

Result: Stack은 Pooling처럼 데이터를 필요할 때 꺼내 쓰고, 필요 없어지면 다시 넣는 방식에 아주 잘 어울립니다.
몇 개가 필요할지 모르는 데이터를 저장하고 관리할 때 특히 유용합니다.

 

'C#' 카테고리의 다른 글

[C#] 프로퍼티  (0) 2025.05.13
[C#] 다형성  (0) 2025.05.12
[C#] 빠른 입력과 출력  (0) 2025.05.04
[C#] switch문  (0) 2025.05.03
[C#] 동기와 비동기  (0) 2025.04.30