私は Indy 10.5 といくつかの古いバージョンを何年も使用していました。HTTP ダイジェスト認証をサポートするために、SVN から最新バージョンをダウンロードしました。
これは、私が抱えていた HTTP ダイジェスト認証の問題を修正しています...
問題は、10.6 以降のすべてのバージョンでの CPU 使用率です。
HTTP ストリーム (正確にはネットワーク カメラ MJPEG ストリーム) を取得するために 20 のスレッドを並行して作成できましたが、解像度とフレーム レートに応じて、タスクごとに約 1 ~ 3% の CPU を使用していました。(解析とデコードを含む)
通常は IOHandler、CookieManager を使用し、InternalWork メソッドに依存するコードをクリーンアップして、次のような idHttp の最も基本的な使用法が残るまで:
procedure TForm1.Button1Click(Sender: TObject);
var
HTTPClient : TidHTTP;
begin
HTTPClient := TidHTTP.Create(nil);
HTTPClient.Get('http://plazacam.studentaffairs.duke.edu/axis-cgi/mjpg/video.cgi?resolution=640x480');
HTTPClient.Free();
end;
また、設定を変更しない上記のコードでも、CPU の 25% を消費しています (そのため、コンピューターの 1 コアが飽和状態になります)。
これは無限ストリームであるため、クライアントに返されないのは正常ですが、ストリームはおそらく < 100kb/s であるため、それを取得するための CPU 使用率はゼロに近いはずです...
ドイツ語の別のフォーラムで、この HTTPOptions を追加すると高 CPU の問題が解決する可能性があることを読みましたが、私の場合は CPU には影響しません: HTTPOptions := [hoNoParseMetaHTTPEquiv]
Indy SVN の以前のリリースを試して、デイリー ビルドに固有のものではないことを確認しました。
XE4、XE5、および X6 に同梱されている 10.6.0 バージョンにも同じ問題がありますが、ロールバックすると: Indy 10.5.5 - RS2010 RTM
その後、すべてがうまくいき(HTTPダイジェスト認証を除く)、CPUの約2%しか使用しません...
誰かが同じことに遭遇し、現在のバージョンの indy がこれを行うために妥当な量の CPU を使用する方法を持っていますか?
ありがとうございました!