|
WinSocket
I/O 모델 |
연결시도/
연결성공 |
메모리 사용량 (KB) |
Non-Paged Pool |
CPU 사용량 (%) |
쓰레드 개수 |
처리량 (Send/Receive Byte Per Second) |
Blocking |
|
|
|
|
|
2,198,148/2,198,148 |
404,227/402,227 |
|
Non-blocking |
|
|
|
|
|
|
WSAAsync-Select |
|
|
|
|
|
1,610,204/1,637,819 |
652,902/652,902 |
|
WSAEvent-Select |
7,000/6,999 |
12,000/11,080 |
46,000/45,933 |
|
|
|
|
|
4,921,350/5,186,297 |
3,217,493/3,217,297 |
3,851,059/3,851,059 |
|
Overlapped (events) |
7,000/5,558 |
12,000/12,000 |
49,000/48,997 |
|
|
|
|
|
5,024,723/4,095,644 |
1,803,878/1,803,878 |
3,865,152/3,834,511 |
|
Overlapped (completion port) |
7,000/7,000 |
12,000/12,000 |
50,000/49,997 |
|
|
|
|
|
6,282,473/3,893,507 |
5,027,914/5,027,095 |
4,326,946/4,326,496 |
|
테스트 서버 : 768 MB 메모리 Pentium 4 1.7GHz Xeon
테스트 클라이언트 : 128 MB 메모리 Pentium 2 233 MHz
128 MB 메모리 Pentium 2 350 MHz
1 GB 메모리 Itanium 733 MHz
테스트 환경 : Windows XP
추천 클라이언트 모델 : 하나 이상의 소켓을 처리하는 클라이언트를 개발하고자 한다면 overlapped I/O 모델이나 WSAEventSelect 모델을 사용하는 것이 성능상으로 유리할 것이다. 만일 윈도우 기반의 응용프로그램을 개발한다면 윈도우 메시지를 이용하는 WSAAsyncSelect 모델을 권해주고 싶다. 왜냐하면 응용프로그램에서 이미 메시지 처리에 관련된 사항들이 준비되어 있을 것이기 때문이다.
추천 서버 모델 : 동시에 몇 개의 소켓을 처리해야 하는 서버를 개발해야 한다면 overlapped I/O 모델을 선택하는 것이 성능상으로 유리할 것이다. 만일 동시에 대량의 I/O를 처리해야 하는 서버를 개발한다면 I/O completion port 모델을 선택하는 것이 성능상으로 더 좋을 것이다.
출처 : Microsoft 공식 지정 학습서 NETWORK PROGRAMMING FOR MICROSOFT WINDOWS Second Edition 204, 205, 233 page
관련
|
링크
|
Leave a Reply