次のように、while ループで多くの HttpRequests を実行するスクリプトがあります。これは BackgroundWorker で実行されます。
CookieContainer cookieJar = new CookieContainer();
string searchURL = "http://blablabla.com/";
bool shouldRun = true; //this is set elsewhere
while (shouldRun)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(searchURL);
request.ContentType = "application/json";
request.Method = "POST";
request.ServicePoint.Expect100Continue = false;
request.CookieContainer = cookieJar;
request.Headers.Add("X-HTTP-Method-Override: GET");
request.Timeout = 1000;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
// Get the stream containing content returned by the server.
Stream responseStream = response.GetResponseStream();
// Open the stream using a StreamReader for easy access.
StreamReader reader = new StreamReader(responseStream);
// Read the content.
string responseFromServer = reader.ReadToEnd();
JObject o = JObject.Parse(responseFromServer);
//Do something with the JObject
}
スクリプトを実行すると、CPU の約 10% が使用されます (Intel i5 @ 2.5GHz)。1 秒あたりの要求数を減らさずに CPU 負荷を減らすことができるかどうかを確認するために、他のアプローチを検討したいと思います (現在レートは約 3 ~ 4 リクエスト/秒です)、または 1 秒あたりのリクエスト数を増やすことができるかどうか。
非同期リクエストを検討していますが、上記の 2 つの改善点のいずれかを得ることができますか?