문자열 비교에 있어서 기존의 strcmp(pString1, pString2) == 0 방식을 사용하는 대신, 문자열을 한 번만 저장하는 풀을 활용하여 인덱스끼리 비교하는 방법을 사용한다. 이 방식은 문자열 전체를 매번 비교하는 오버헤드를 줄이고, 동일한 문자열이 중복 저장되는 문제를 해결하여 메모리 사용량을 크게 개선한다.
예를 들어, FNamePool 클래스는 문자열을 풀에 저장하고, FName 클래스는 해당 문자열의 인덱스를 저장한다. 이후 두 FName 객체를 비교할 때는 인덱스 값만 비교하면 되므로, 비교 연산의 효율성이 크게 향상된다.
간단한 코드 예시는 다음과 같다:
class FName {
int index;
public:
FName(const std::string& Name) {
index = FNamePool::GetInstance().AddEntry(Name);
}
bool operator==(const FName& Other) const {
return index == Other.index;
}
};
이와 같이 인덱스 기반 비교를 사용하면 문자열 비교에 소요되는 시간을 줄일 수 있으며,
메모리 사용 측면에서도 동일한 문자열이 여러 번 저장되는 것을 방지할 수 있다.
'TIL' 카테고리의 다른 글
UE Actor 라이프사이클 (0) | 2025.03.21 |
---|---|
매크로와 RTTI (0) | 2025.03.20 |
World Grid 렌더링 최적화: 두 가지 접근 방식 (0) | 2025.03.18 |
std::vector erase, std::remove 관련 (0) | 2025.03.18 |
Today I Learned (0) | 2025.02.24 |