Приглашаю вас в небольшое приключение выходного дня, в котором никто никому ничего не будет доказывать. Мы просто будем реализовывать один и тот же несложный алгоритм, разыскивающий простые числа в некотором диапазоне, на нескольких языках программирования: C, C++, Scheme и Python - и смотреть, что с этим кодом могут сделать современные оптимизирующие компиляторы. В процессе приключения мы увидим, что «динамический» не означает «совсем уж медленный», и посмотрим на приёмы программирования на Scheme, что, как мне кажется, можно сравнить с путешествием на экзотический остров.
Рубрика «PyPy»
Удивительное приключение в стране оптимизирующих компиляторов
2022-04-03 в 12:53, admin, рубрики: C, c++, chez scheme, clang, gcc, PyPy, python, Программирование, производительностьВышла первая бета PyPy3 с поддержкой Python 3
2013-07-31 в 5:56, admin, рубрики: PyPy, python, метки: PyPy Разработчики PyPy представили первую бету выходящего релиза PyPy3. Это первый релиз, в котором будет поддерживаться Python 3 (3.2.3).
Загрузить и попробовать можно по ссылке.
В бете есть несколько известных проблем, включая серьезную регрессию производительности, которые будут исправлены к финальному релизу (к примеру, пока что пишут, что выполнение одной и той же программы может быть в 37 раз медленнее, чем это было на PyPy 2.0.2).
Бенчмарк HTML парсеров
2012-12-26 в 9:25, admin, рубрики: benchmark, dom, erlang, html, lxml, nodejs, parser, PyPy, python, xpath, высокая производительность, Программирование, метки: benchmark, c++, dom, erlang, html, lxml, nodejs, parser, PyPy, python, xpathПереписывал на работе кусок одного сервиса с 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
- PyPi — BeautifulSoup 3
- PyPi — BeautifulSoup 4
- PyPi — html5lib
- Node.JS — cheerio
- Node.JS — htmlparser
- Node.JS — jsdom
- C — libxml2 (скорее для справки)
В тесте сравниваются скорость обработки N итераций парсера и пиковое потребление памяти.
Интрига: кто быстрее — Python или PyPy? Как сказывается иммутабельность Erlang на скорости парсинга и потреблении памяти? Насколько быстра V8 NodeJS? И как на всё это смотрит код на чистом C.
Читать полностью »