TIdHTTP 구성 요소의 ConnectTimeoout 속성을 설정할 때 요청 (GET 및 POST)이 약 120ms 느려지는 것을 발견했습니다.Delphi : IdHTTP.ConnectTimeout이 요청을 느리게하는 이유는 무엇입니까?
왜 그런가요? 어떻게 든 피하거나 건너 뛸 수 있습니까?
인디 구성 요소가 포함 된 D2010 : D2010에 설치된 모든 업데이트. 나는 평균 얻을 코드에서 ConnectTimeout이 세트로
Procedure DoGet;
Var
Freq,T1,T2 : Int64;
Cli : TIdHTTP;
S : String;
begin
QueryPerformanceFrequency(Freq);
Try
QueryPerformanceCounter(T1);
Cli := TIdHTTP.Create(NIL);
Cli.ConnectTimeout := 1000; // without this we get < 15ms!!
S := Cli.Get('http://127.0.0.1/empty_page.php');
Finally
FreeAndNil(Cli);
QueryPerformanceCounter(T2);
End;
Memo1.Lines.Add('Time = '+FormatFloat('0.000',(T2-T1)/Freq));
End;
: OS는
내 타이밍 루틴은 대부분의 패치 WINXP (32 비트) SP3입니다. 시간이 130-140ms인데 약 5-15ms가 필요하지 않습니다 ...
"연결 스레드가 작업을 완료했는지 확인하기 전에 호출 스레드가 항상 잠자기 상태가됩니다." 이전 버전에서도 마찬가지 였지만 2008 년 3 월 이후로는 사실이 아닙니다. –
"이전 버전에서는 사실 이었지만 2008 년 3 월 이후로는 사실이 아닙니다." 오래된 행동이 버그로 간주되어야하기 때문에 좋은 일입니다. – TheBlastOne
이 질문에 불편을 끼쳐 드려 죄송합니다. 10.2 도쿄를 사용하고 있으며 OP와 동일한 동작, 시간 초과없이 10-15ms 연결 시간, 130-140ms를 경험하고 있습니다. 따라서 "연결 스레드가 해당 작업을 완료했는지 여부를 확인하기 전에 호출 스레드는 항상 잠자기 상태입니다"라는 메시지가 계속 표시됩니다. – Bozzy