2014-10-02 2 views
2

Это приложение для окон. Я использую секундомер, чтобы измерить время этой операции:HttpClient.PostAsync занимает вдвое больше времени, чем реальная латентность?

HttpResponseMessage response = await httpClient.PostAsync(EndPoint, stringContent); 

Это 600-700 мс. Задержка для веб-службы составляет ~ 250 мс. Я проверил с помощью скрипача, и запрос принимает < 300 мс. Поэтому мой вопрос в том, почему есть дополнительные 300-400 мс?

+0

Вы используете измерения из * одинакового * запроса (не разные запросы к одному API, но фактически одни и те же сетевые пакеты)? Вы выполнили один и тот же код в цикле и усреднили результаты? –

+0

Фактически этот запрос API находится внутри таймера (intervel = 500). Задержка отображается в строке состояния приложения. Друг предполагает, что метод PostAsync вызывает задержку. Является ли это возможным? –

+0

Если вы имеете в виду, что ответы на мои вопросы - «нет» и «нет», я рекомендую вам провести такое тестирование. –

ответ

1

Вы должны принять во внимание поездку туда и обратно. Ваш код имеет 2 части:

  • Отправка запроса, отправленного от вас на веб-службу.
  • Чтение ответа, отправленного с веб-службы вам.

Так что ваш запрос по-прежнему принимает ~ 300 мс, но так ответ, и именно поэтому все это занимает около 2х латентности.

+0

Это не кажется правильным. Общий прошедший столбец в скрипаче показывает ~ 300 мс. Истекшее время начинается с ClientConnected на ClientDoneResponse. –