Я использую библиотеку с открытым исходным кодом для подключения к своему веб-серверу. Я был обеспокоен тем, что веб-сервер работал очень медленно, а затем я попытался провести простой тест на Ruby и получил эти результаты
Ruby-программа: 2.11 секунды для 10 HTTP
GETs
Ruby-программа: 18,13 секунды для 100 HTTP
GETs
C # библиотека: 20,81 секунды для 10 HTTP
GETs
Библиотека C #: 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, я обновил результаты.