UE5

UE5. 패킷 데이터 직렬화(버퍼 생성)

에린_1 2024. 10. 30. 14:36
728x90

UE5

패킷 데이터 직렬화(버퍼 생성)

TArray<uint> PacketData;
PacketData.SetNumUninitialized(Header.TotalSize);
  • TArray<uint> 형식의 배열을 생성하여 패킷 전체 크기만큼 메모리를 할당한다.
  • SetNumUninitialized() 는 초기화되지 않은 상태로 메모리를 할당하는 함수로, 패킷 데이터를 저장할 공간을 확보한다.

SetNumUnititialized()

  • 배열의 크기르 설정하면서, 불필요한 초기화 비용을 피하고 성능을 최적화 시키기 위해 사용한다.
  • 장점
    1. 성능 최적화
      • 배열의 요소를 초기화하지 않기 때문에 불필요한 초기화 과정에 소요되는 CPU 자원을 절약할 수 있다.
      • 원시 데이터 타입(uint8, int, float 등)에서 초기화는 종종 성능 저하의 원인이 될 수 있기 때문에 초기화를 건너뛰는 것이 빠른 성능을 보장할 수 있다.
    2. 메모리 할당 효율성
      • 초기화가 필요 없는 경우 굳이 SetNum() 을 사용해서 메모리 초기화 까지 할 필요가 없다.
      • SetNum() 을 사용하면 메모리 할당뿐만 아니라 할당된 모든 원소에 기본값을 할당하므로, 데이터가 곧바로 덮어씌워질 경우에 불필요한 작업이 된다.
    3. 유연한 데이터 처리
      • 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