다음을 통해 공유


수정 버전 3: 압축 블록 보내기

이 버전의 애플리케이션에서는 데이터의 압축된 블록 전송이 사용됩니다. 이렇게 변경하면 성능이 크게 향상됩니다.

BYTE tmp[3*ROWS*COLS];
FIELD Old = Map;
ComputeNext( Map );
n=Compact(Map,Old,tmp);
bind( s, ... );
connect( s, ... );
send( s, tmp, 3*n );
//can't do recv(s,tmp,n)
for(int i=0; i < n; )
    recv( s, tmp+i, n-i );
closesocket( s );

이 버전의 변경 내용

이 버전은 다음과 같은 변경 내용을 반영합니다.

  • 셀 업데이트는 더 이상 직렬화되지 않습니다.
  • 블록 보내기가 사용되므로 애플리케이션은 더 이상 수다스럽지 않습니다.
  • 데이터 압축이 사용되어 지방이 적은 애플리케이션이 생성됩니다.

이 버전의 애플리케이션에는 여전히 문제가 있습니다. 수신 없이 대용량 보내기가 사용되므로 교착 상태의 위험이 존재합니다. 서버는 수신된 3바이트마다 1바이트를 보냅니다. 이 샘플 애플리케이션에 대한 수신 버퍼 크기가 1000바이트 미만인 경우 교착 상태가 발생할 수 있습니다.

주요 성능 메트릭

다음 성능 메트릭은 RTT(왕복 시간), Goodput 및 프로토콜 오버헤드로 표현됩니다. 이러한 용어에 대한 설명은 네트워크 용어 항목을 참조하세요.

이 버전은 다음과 같은 성능 메트릭을 반영합니다.

  • 셀 시간 — .002*RTT
  • Goodput — 2KB/RTT
  • 프로토콜 오버헤드 — 14%

14%의 오버헤드 중 6%는 이더넷 헤더에서, 나머지 8%는 연결 시작 및 중단에서 비롯됩니다.

느린 애플리케이션 개선

네트워크 용어

기준 버전: 성능이 매우 낮은 애플리케이션

수정 버전 1: 명백한 정리

수정 버전 2: 더 적은 수의 연결을 위해 다시 디자인

향후 개선 사항