Q&A

  • 다음 두 소스중 어느것이 더 빠를까요?
윈소켓을 써서 필요한 데이타를 받아 빨리 처리해야하는
일입니다

다음 두가지 소스중에서 어느 소스가 더 빨리 데이타를 처리하는지요

컴 사양이 좋아져 큰 차이가 없을지 모르지만
어쨋든 아주 미세하더라도 빨라야합니다
첫번째는 받은 데이타를 edit 박스에 넣고 onchange이벤트 발생으로
데이타 변동을 감지하여 처리하는 것이고
두번째는 변수를 비교하여 데이타 변동을 알아채서 처리하는 것입니다
받는 문자 데이타 길이는 25바이트로 항상 동일합니다
몇만분의 1초라도 어느쪽이 더 빨리 처리할지 고수님
가르쳐주시길 부탁드립니다

-첫번째 소스-

procedure TForm1.ClientSocketRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
   RDatas:=Socket.ReceiveText;
   Edit1.Text:=RDatas;
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
  ChkStr:=Edit1.Text;
  DoWork(ChkStr);
end;

-두번째 소스

procedure TForm1.ClientSocketRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
   OldData:=RDatas;
   RDatas:=Socket.ReceiveText;
   if OldData<>RDatas then DoWork(RDatas);
end;

1  COMMENTS
  • Profile
    이중철 2003.04.30 07:18
    꿈의대화님이 말씀하신대로 그와같은 작업을 합니다.

    그리고 첫번째 소스를 보면 메세지큐에 쌓이기 때문에 다른 메세지가 있으면

    더 늦어지겠지요 ^^

    그렇지만 님께서 올리신 2번째 소스를 보면  받자마자

    어떠한 Client Job을 하실려고 하는듯 한데 그거 별로 않좋을텐데요..

    만약 받자마자 Client Job을 하실때 그 작업을 하는동안에

    수신 트래픽이 발생하면 데이타가 복수로 올꺼에요

    25바이트가 아니라 더 많이 오겠죠..

    이런것을 해결해야 합니다.

    그래서 오히려 추천은 첫번째 방법입니다만 사실 첫번째, 두번째

    방법들 다  않좋아요.

    다른 방법을 모색해 보세요

    문제점을 지적하자면,

    첫번째, 두번째 방법 다 복수의 데이타가 왔을때 처리루틴이 빠져 있고

    첫번째는 이벤트가 실행되지 않고 있을때(메세지 큐에 대기중) 데이타가

    변경되었을 경우 처리가 되지않으며 두번째는 복수의 데이타가 빈번히

    발생할 듯 하고 또한 수신 트랙픽이 많을 경우  프로그램이 다운된 듯한

    느낌이 발생할꺼에요.

    그럼 이만 즐..

    • 파인뷰
    • 2003.04.29 23:42
    • 1 COMMENTS
    • /
    • 1 LIKES
    • 이중철
      2003.04.30 07:18
      꿈의대화님이 말씀하신대로 그와같은 작업을 합니다. 그리고 첫번째 소스를 보면 메세지큐에 쌓이기 때...
    • 꿈의대화
      2003.04.29 21:58
      .
    • 이강석
      2003.04.30 01:54
      저도 그런 문제라고 생각은 듭니다. 그런데 문제는 그 ParValue를 처리하는 부분은 제가 직접처리하는게 ...
    • 김재현
    • 2003.04.29 21:07
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 몽상
      2003.05.07 20:51
      SERVER NAME은 IP주소로 하는 것이 아니라.. 서비스 이름을 말하는 겁니다. 예로 : ORA817  ...
    • 쌩초보
    • 2003.04.29 20:52
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2003.05.01 01:35
      안녕하세요. 한원희입니다. 자식 윈도우에서 발생한 이벤트들을 부모 윈도우의 WM_COMMAND 메시지로 알...
    • 이영민
    • 2003.04.29 20:39
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이중철
      2003.04.30 06:48
      님께서 제시한 내용은 아마 될꺼에요. 그러나 실제 코딩은 그와 같지 않고 다를꺼에요. 다음을 보세요....
    • 오병주
      2003.04.29 22:36
      이상하네요... 않될리가 없을테인데... 그러면 이렇게 한번 해보세요.. 소숫점 위의 값 과 소숫점 ...
    • 최광훈
    • 2003.04.29 20:34
    • 0 COMMENTS
    • /
    • 0 LIKES
    • wooki
      2003.04.29 20:42
      Anchors라는 프로퍼티가 있습니다. akRight와 akBottom을 True로 조정하고 한번 해보세요. 원하는 답이 ...
    • 오병주
      2003.04.30 01:41
      [팁] 화면을 일정한 크기대로 보여주기 (800*600) 개발한 것을 -> 1024*768 크기로 보여주기 패키지...
    • wooki
    • 2003.04.29 20:05
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 민진기
    • 2003.04.29 18:48
    • 7 COMMENTS
    • /
    • 0 LIKES
    • 이병훈
      2003.05.03 10:18
      안녕하세요. 여러 의견이 분분하시건 같아서 몇자 적습니다. ^^; 제가 보기에는 인덱스 구성이 잘못...
    • nilriri™
      2003.05.03 03:28
      Query1.SQL.Add('and to_day IS NULL'); 이부분을 쓰시기 전에.. 일괄적으로 null 값이 들어있는 컬...
    • 이추형
      2003.04.29 23:45
      다른분들이 언급한 like 문법에 대한것은 이해가 가지 않습니다. 건수가 200건 밖에 않되는데 인덱스를 타...
    • 정경철
      2003.04.29 19:44
      Query1.SQL.Add('where buseo like :A1'); 이 부분 때문에 속도가 느려진것 같습니다. 쿼리에서 Like ...
    • KDDG_ZZOM
      2003.04.29 19:18
    • 기형종
      2003.04.29 19:04
      안영하세요 작성하신 테이블에 일단 buseo가 인덱스로 설정되어야 하구요 또 like명령은 가급적 사용하지...
    • 파도랑
      2003.04.29 19:17
      like도 인덱스 사용합니다. (오라클이나 MS SQL의 경우임. 질문처럼 파라독스를 사용하면 인덱스 안쓸 수...
    • 이정한
    • 2003.04.29 11:16
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김주
    • 2003.04.29 10:28
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김주
    • 2003.04.29 10:25
    • 2 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2003.04.29 19:59
      FillChar(Rd, SizeOf(Rd), 0); 즐프하세요...
    • 최종민
      2003.04.29 12:34
      혹시 zeromemory라는 함수를 쓰면 되지 않을까요? API인 거 같은데... 다시 초기화가 필요한가요? 그...
    • 김주
    • 2003.04.29 10:12
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이용훈
      2003.04.29 19:52
      찾기에서 'registry에서 시간표현 바꾸기'라는 제목을 찾으세요 김영대님이 이미 답을 해 놓으셨습니다....
    • 정민섭
    • 2003.04.29 09:05
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 타락천사
      2003.04.29 10:20
      안녕하세요. 타락임다.. HTTP 로 대용량 파일을 주고 받으면 웹서버가 조용히 맛갑니다.. 전에 대용...
    • DirtyVictory
      2003.05.01 06:19
        fh := FileOpen(ListBox1.Items.Strings[I], fmOpenRead);   try   &nb...
    • 이민선
    • 2003.04.29 08:02
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2003.04.29 19:03
      TZipTV라는 컴포넌트가 있습니다. www.tziptv.com 에 가보세욤 ^^; 또는 우리나라에선.. http:/...
    • 양윤정
    • 2003.04.29 07:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 타락천사
      2003.04.29 10:24
      안녕하세요. 타락임다. 에러는 b.dcu 파일이 없다는 말입니다. 그럼 전체 검색 경로중 b.dcu 파일이 ...
    • 이상현
    • 2003.04.29 06:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 장태원
      2003.04.29 19:27
      엔터랑 스페이스 둘다 됩니다.
    • 초보자
    • 2003.04.29 06:27
    • 1 COMMENTS
    • /
    • 0 LIKES
    • ^ㅡ^
      2003.04.29 06:35
      답변이 될지 모르겠습니다 저두 초보라서리 일단 그룹박스에 구분을 주시고 그것을 선택한것에 대...