Я использую библиотеку с открытым исходным кодом для подключения к моему веб-серверу. Я был обеспокоен тем, что веб-сервер работает очень медленно, а затем я попытался сделать простой тест в Ruby, и я получил эти результаты
Программа Ruby: 2.11 секунды для 10 HTTP GETs
Программа Ruby: 18,13 секунды для 100 HTTP GETs
Библиотека С#: 20.81 секунд для 10 HTTP GETs
Библиотека С#: 36847.46 секунд для 100 HTTP GETs
Я профилировал и нашел проблему такой функцией:
private HttpWebResponse GetRawResponse(HttpWebRequest request) {
HttpWebResponse raw = null;
try {
raw = (HttpWebResponse)request.GetResponse(); //This line!
}
catch (WebException ex) {
if (ex.Response is HttpWebResponse) {
raw = ex.Response as HttpWebResponse;
}
}
return raw;
}
Отмеченная строка занимает более 1 секунды, чтобы завершить ее самостоятельно, пока программа ruby, выполняющая 1 запрос, занимает 0,3 секунды. Я также делаю все эти тесты на 127.0.0.1, поэтому пропускная способность сети не является проблемой.
Что может стать причиной этого огромного замедления?
UPDATE
Ознакомьтесь с измененными результатами тестов. Я действительно тестировал 10 GET, а не 100, я обновил результаты.