2010년 7월 9일 금요일

TCP socket을 통한 파일전송에서 속도 안나오고 CPU 점유율 높아질때...

매우 단순한 원인이긴 했지만....

윈도우7에서...

한쪽에서 fread로 파일을 읽어 tcp socket으로 send하고...
다른쪽에서 tcp socket read하고 fwrite하는 매우 단순한 프로그램...

근데 이놈만 돌리면 CPU load 쫙쫙 올라가고 로컬에서 카피하는데도 20kbps나 나오나 그런다...

원인은 fread할때 한 바이트씩 읽어서 보내고 받아서 저장했기때문...
그래서 512byte나 1024byte씩 읽어서 보냈더니 성능 짱짱하게 나와줌.

근데 신기한건....
한바이트씩 읽어서 던지게 만든 코드를 리눅스에서 돌렸을땐 짱짱하게 잘 돌아줬다는 사실..


평소 개발습관이 리눅스에서 간단히 돌려보고 윈도그로 포팅하는 편인데...
이런 차이가 생겨주시니... 후덜덜하군..

암튼...덕분에 하루 날려먹었음. 할꺼 많은데..

댓글 없음:

댓글 쓰기