Суть такова: пишу приложение с использованием httpwebrequest на c#. Запросы очень медленные (от 500 до 2500мс), а в приложении очень важна скорость.
На каком языке http запросы выполняются быстрее?
запрос в 2 секунды для C# это неправильно, если принять что сервер отдает быстро (видно по curl), нужен код чтобы увидеть что не так с ним. можно по нему профайлер прогнать и посмотреть что дольше всего отрабатывает
Shiramine: повторил код у себя string sender = "localhost:811";
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(sender);
WebResponse resp = null;
req.Proxy = null;
req.Method = "GET";
req.Timeout = 1500;
req.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
req.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.94 Safari/537.36 OPR/27.0.1689.66";
var coociesStr = "asdasdads";
req.Headers.Add("Cookie", coociesStr);
req.Headers.Add("Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4");
DateTime dt1 = DateTime.Now;
resp = req.GetResponse();//задержка 400-800мс (иногда превышает таймаут)
DateTime dt2 = DateTime.Now;
TimeSpan ts = dt2 - dt1;
Console.WriteLine(ts.Milliseconds );
StreamReader sr = new StreamReader(resp.GetResponseStream());
string str = sr.ReadToEnd();
sr.Close();
Console.ReadLine();
на GetResponse 10 мс, на весь блок кода 70 мс, нужно проверить на другом компьютере, если будет нормально то это вопрос из серии "GetResponse ( ) Медленное только на моем компьютере", вкратце погуглил причину вроде не нашли, какой антивирь стоит? Есть смысл попробовать его снести вместе с файрволами и попробовать снова, возможно антивирусы сетевой поток проверяют.
Чудес не бывает. Если curl работает быстрее, чем .NET - значит, они просто делают разные запросы. Посмотрите, чем их запросы различаются в том же Fiddler.