0

synchronous を使用すると、メソッドの前後にHttpClient置くだけで、1 つのリクエストの時間を取得するのは非常に簡単です。System.currentTimeMillis()execute()

しかし、 に関して言えばHttpAsyncClientexecute()は非同期であり、タスクをキューに入れるだけです。そのため、接続の開始時刻を取得する方法がわかりません。

接続の終了時間は簡単です。クラス インスタンスSystem.currentTimeMillis()のメソッドを呼び出すだけです。OnComplete()FutureCallback<HttpResponse>

同期HttpClientと非同期の両方に 、 、のHttpAsyncClient3 つのフェーズがあります。すべてのリクエストは、実際に実行される前にキューに入れられます。を呼び出すと、リクエストが内部キューに送信された開始時刻を記録するだけなので、最終的に得られるのは + +です。バッチ リクエストをテストするためにベンチマークを実行すると、問題ありませんが、単一のリクエストをそれぞれテストするには、減算する必要があります。ConnectRequestTimeConnectTimeSocketTimelong start=System.currentTimeMillis()HttpAsyncRequestProducer.html#generateRequest()ConnectRequestTimeConnectTimeSocketTimeConnectRequestTime

だから私の本当の質問は、の時間を取得する方法ConnectRequestTimeです?

4

1 に答える 1

0

HttpAsyncRequestProducer.html#generateRequest()は適切な場所です。

また、マイクロ ベンチマークを実行するときに Apache HttpAsyncClient から最大のパフォーマンスを引き出す方法の例として、これを見たいと思うかもしれません。

于 2015-08-23T12:37:34.427 に答える