Блог - Linux, программирование, Я!

ПрограммированиеБенчмарк HTML парсеров

Переписывал на работе кусок одного сервиса с Python на Erlang. Сам сервис занимается тем, что скачивает по HTTP значительное количество однотипных HTML страниц и извлекает из них некоторую информацию. Основная CPU нагрузка сервиса приходится на парсинг HTML в DOM дерево.

Сперва захотелось сравнить производительность Erlang парсера mochiweb_html с используемым из Python lxml.etree.HTML(). Провел простейший бенчмарк, нужные выводы сделал, а потом подумал что неплохо было бы добавить в бенчмарк ещё парочку-другую парсеров и платформ, оформить покрасивее, опубликовать код и написать статью.
На данный момент успел написать бенчмарки на Erlang, Python, PyPy, NodeJS и С в следующих комбинациях:

  • Erlang - mochiweb_html
  • CPython - lxml.etree.HTML
  • CPython - BeautifulSoup 3
  • CPython - BeautifulSoup 4
  • CPython - html5lib
  • PyPy - BeautifulSoup 3
  • PyPy - BeautifulSoup 4
  • PyPy - html5lib
  • Node.JS - cheerio
  • Node.JS - htmlparser
  • Node.JS - jsdom
  • C - libxml2 (скорее для справки)

В тесте сравниваются скорость обработки N итераций парсера и пиковое потребление памяти.

Интрига: кто быстрее - Python или PyPy? Как сказывается иммутабельность Erlang на скорости парсинга и потреблении памяти? Насколько быстра V8 NodeJS? И как на всё это смотрит код на чистом C. (далее...)

ОбщекомпьютерноеОтчет о конференции ADD-2010 в Ярославле

Побывал 23-24 сентября на конференции Application developer days в Ярославле. Вот решил написать краткий отчет. (далее...)