Насколько быстро работает класс HTTPWebRequest? - PullRequest
0 голосов
/ 31 января 2012

Мне было интересно, насколько быстро HTTPWebRequest сравнивается с самописным анализатором HTTP-ответа.

Я знаю, что класс HTTPWebRequest способен использовать постоянное TCP-соединение с конвейерной передачей (конвейерная обработкавключен по умолчанию).Также можно установить значения для кэширования и сжатия.

Синтаксический анализ ответа, вероятно, никогда не является узким местом, но просто для любопытства: класс HTTPWebRequest создает «ненужные» накладные расходы?

Ответы [ 2 ]

2 голосов
/ 31 января 2012

Не зная, что такое самописанный парсер, невозможно дать количественный ответ на ваш вопрос. Тем не менее, вы могли бы иметь возможность написать синтаксический анализатор, который на быстрее HTTPWebRequest, если (например):

  • Ваш ответ будет содержать только определенный набор заголовков
  • Заголовки будут возвращены только в определенном порядке
  • Ваш запрос будет отправлен только в один пункт назначения
  • Любые другие ограничения, которые вы можете использовать для ограничения обработки, которая будет выполняться в ответе

Если вы можете ограничить сценарий, вы сможете превзойти HTTPWebRequest, поскольку он должен обрабатывать любой действительный ответ, тогда как пользовательский анализатор должен только уметь обрабатывать ожидаемые сценарии. Тем не менее, имейте в виду, что то, что вы пишете, не будет true HTTP-анализатором ответов, а скорее чем-то, что обрабатывает строгое подмножество допустимых ответов.

Единственный способ узнать, есть ли какие-либо издержки, которых вы можете избежать, - это написать собственный (подмножество) анализатор и сравнить его производительность со встроенным.

1 голос
/ 31 января 2012

У меня нет заключения, но я считаю, что подобные вопросы должны мотивироваться реальным сценарием случая.Например, замедляет ли класс HttpWebRequest ваше решение?Вы проверили его влияние на производительность с помощью какого-либо профилировщика?

И, в конце концов, есть известное предложение о таких вопросах, касающихся оптимизации: преждевременная оптимизация - дьявол любой разработки программного обеспечения .

Мое лучшее предложение - позаботиться о других вещах, использовать хороший профилировщик и выяснить, где у вашей программы проблемы с производительностью (я уверен, что HttpWebRequest не будет проблемой!).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...