윈소켓을 써서 필요한 데이타를 받아 빨리 처리해야하는
일입니다
다음 두가지 소스중에서 어느 소스가 더 빨리 데이타를 처리하는지요
컴 사양이 좋아져 큰 차이가 없을지 모르지만
어쨋든 아주 미세하더라도 빨라야합니다
첫번째는 받은 데이타를 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;
그리고 첫번째 소스를 보면 메세지큐에 쌓이기 때문에 다른 메세지가 있으면
더 늦어지겠지요 ^^
그렇지만 님께서 올리신 2번째 소스를 보면 받자마자
어떠한 Client Job을 하실려고 하는듯 한데 그거 별로 않좋을텐데요..
만약 받자마자 Client Job을 하실때 그 작업을 하는동안에
수신 트래픽이 발생하면 데이타가 복수로 올꺼에요
25바이트가 아니라 더 많이 오겠죠..
이런것을 해결해야 합니다.
그래서 오히려 추천은 첫번째 방법입니다만 사실 첫번째, 두번째
방법들 다 않좋아요.
다른 방법을 모색해 보세요
문제점을 지적하자면,
첫번째, 두번째 방법 다 복수의 데이타가 왔을때 처리루틴이 빠져 있고
첫번째는 이벤트가 실행되지 않고 있을때(메세지 큐에 대기중) 데이타가
변경되었을 경우 처리가 되지않으며 두번째는 복수의 데이타가 빈번히
발생할 듯 하고 또한 수신 트랙픽이 많을 경우 프로그램이 다운된 듯한
느낌이 발생할꺼에요.
그럼 이만 즐..