2012-01-31 4 views
0

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

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

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

+3

Я не могу думать, что вы можете считать правильным ответом. Он имеет функции, они могут или не совпадать с тем, что вам нужно. Он имеет производительность, которая может или не может соответствовать тому, что вам нужно. Вы хотите, чтобы кто-то прокомментировал вас? –

+0

@Kieren Johnstone: Нет, я не хочу, чтобы кто-то прокомментировал меня. Я пытаюсь побудить кого-то, кто уже сделал профилирование в прошлом, поделиться своими результатами. Если никто не отвечает, я могу легко удалить вопрос в будущем. Спасибо за downvote в любом случае – citronas

+0

Для уточнения: я сам не написал парсер, мне было просто любопытно, есть ли известные проблемы скорости с классом HTTPWebRequest – citronas

ответ

2

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

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

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

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

1

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

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

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

Смежные вопросы