하아하아
795
2017-09-14 16:17:00.0
6
611

c# 서버 만드는 중 입니다.


지금 계속 캡슐화를 할 수록 반응 속도가 느려지는 신기한 경험을 하고 있네요.

대충 구조 잡은 이전 코드로 돌려놓으니 스레드 처리속도가 10배 빠릅니다. ㅋㅋ

갑자기 마이너스의 손이 되었습니다.

0
0
  • 댓글 6

  • Antoine
    50
    2017-09-14 17:29:46.0

    GC의 발생으로 속도가 느려지는게 아닌지요?

    0
  • March
    1k
    2017-09-14 18:20:27.0 작성 2017-09-14 18:33:38.0 수정됨

    캡슐화라...

    객체지향에서 말하는 맴버 캡슐화는 아니죠?

    그거랑 성능과는 관계가 없는데....

    wrapping 말씀하시나요?

    그것되 사실 관계가 없는데....

    자료형 특성도 한몫하구요.

    박싱/언박싱 비용이 특별히 비싼넘도 있구요.

    linq/lambda 지연실행 걸려 겁내 느려지는 경우도 있죠

    느려지는 이유는 굉장히 많은 이유가 있어서 단정짓기 어려운데 profiler 떠보시면 답나와요

    0
  • 하아하아
    795
    2017-09-14 18:57:16.0

    enum serverlist { [서버,아이피] main, [서버,아이피] sub}

    getSelf(this tcpserver me){ return me.attribute}

    대충 저딴 코드로 지저분한거 없애버리고, 테스트 해봤는데 느려져서 보니깐,

    소켓 열고 닫는 테스트 코드에서 while{  send { 소켓열고 닫고 } } 이걸

    while { 소켓열고 send{} 소켓 닫고} 이렇게 바꾸니 빨라지네염..

    그 wrapping 도 대충 중구난방으로 하다보니 코드 보기 귀찮아서 다시 짜는중입니다.

    그런뎅.. accept LOOP 에서

    (new Task(() => broadcastQueueAdd(mPhase, result))).Start();

    위처럼 api 수준에서 쓰레드 불러오긴 하는데 accept 랑 1:1 개념으로 막 생성해도

    괜찮을라나 모르것습니다.

    0
  • 하아하아
    795
    2017-09-14 18:58:22.0

    서버 프로그래밍이 순서제어의 참맛을 느끼게 해주네요.ㅋㅋㅋ

    0
  • 꾸아앙
    618
    2017-09-15 08:11:21.0

    웹서버 만드시는건가요?

    브로드캐스트라는 이름을보면 연결지향일것 같은데...

    열고 보내고 닫는건 이유를 모르겠네요

    0
  • 하아하아
    795
    2017-09-15 09:49:21.0

    제가 api 사용법이 숙지가 안되서 그런건데요.

    tcpclient 는 항상 new 로 할당해서 열고 쓰고 닫고 단 1번씩만 가능하네요.

    그래서 코드가 while{  send { 소켓열고 닫고 } } 이걸로 다시 회귀함ㅋㅋ

    0
  • 로그인을 하시면 댓글을 등록할 수 있습니다.