• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

왜 SendBuffer 를 Session 이 가지면 성능에 문제가 되나요?

24.01.14 13:03 작성 조회수 98

0

1명의 움직임을 100명에게 패킷으로 보내려면 Session 이 가진 버퍼를 100명에게 보내면 될 것 같아서...

왜 위 경우에 하나만 만들어서 100명에게 보낼 수 없는지 궁금합니다.

답변 1

답변을 작성해보세요.

1

<1명의 움직임>이라는 행위를 패킷으로 만드는 작업도
결국 복사 비용이 들어갑니다. (playerId, posx, posy) 뭐 이런 식으로 데이터 복사를 해야겠죠.
SendBuffer를 Session마다 둬서 100명한테 열려야 하면 그 정보를 100번 복사해야 합니다.
반면 SendBuffer를 중앙에서 한 번만 만들면,
일일히 다시 복사하지 않고, 그 정보를 그대로 전송 요청을 해줄 수 있겠죠.
커널 쪽에서 관리하는 송수신 버퍼에 복사는 일어나겠지만 그것은 필연적인 것이고.
최소한 유저레벨에서 불필요한 복사를 줄일 수 있다는 것이 핵심입니다.