728x90
UE5
패킷 데이터 직렬화(버퍼 생성)
TArray<uint> PacketData;
PacketData.SetNumUninitialized(Header.TotalSize);
- TArray<uint> 형식의 배열을 생성하여 패킷 전체 크기만큼 메모리를 할당한다.
- SetNumUninitialized() 는 초기화되지 않은 상태로 메모리를 할당하는 함수로, 패킷 데이터를 저장할 공간을 확보한다.
SetNumUnititialized()
- 배열의 크기르 설정하면서, 불필요한 초기화 비용을 피하고 성능을 최적화 시키기 위해 사용한다.
- 장점
- 성능 최적화
- 배열의 요소를 초기화하지 않기 때문에 불필요한 초기화 과정에 소요되는 CPU 자원을 절약할 수 있다.
- 원시 데이터 타입(uint8, int, float 등)에서 초기화는 종종 성능 저하의 원인이 될 수 있기 때문에 초기화를 건너뛰는 것이 빠른 성능을 보장할 수 있다.
- 메모리 할당 효율성
- 초기화가 필요 없는 경우 굳이 SetNum() 을 사용해서 메모리 초기화 까지 할 필요가 없다.
- SetNum() 을 사용하면 메모리 할당뿐만 아니라 할당된 모든 원소에 기본값을 할당하므로, 데이터가 곧바로 덮어씌워질 경우에 불필요한 작업이 된다.
- 유연한 데이터 처리
- SetNumUnitialized() 를 통해 설정된 배열에 대해서 직접 데이터를 채워 넣기 때문에 네트워크와 같은 시스템에서 데이터를 버퍼로 읽어 들이는 작업에 최적화되어 있다.
- 특히, 네트워크 패킷이나 파일 입출력 같은 경우 ,이미 외부로부터 받아오는 데이터가 유효하고 초기화 작업이 필요 없기 때문에 유연하게 사용할 수 있다.
- 성능 최적화
728x90
'UE5' 카테고리의 다른 글
Add Mapping Context (0) | 2024.10.30 |
---|---|
Cast to PlayerController (0) | 2024.10.30 |
Event BeginPlay (0) | 2024.10.30 |
UE5. 언리얼 c++ 코딩 표준 (2) | 2024.09.30 |
UE5. 클래스 만들기, 컴파일, 로그 (1) | 2024.09.30 |