]> Sergey Matveev's repositories - stargrave-blog.git/commit
PyDERASN быстрейший!
authorSergey Matveev <stargrave@stargrave.org>
Sat, 5 Jan 2019 21:26:52 +0000 (00:26 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Sat, 5 Jan 2019 21:26:52 +0000 (00:26 +0300)
commit959d681afd653c6a02f28cd2523b42088b0c163b
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904
parentacbd6a153fbb4fb375be43d87a2ad055b80681e3
PyDERASN быстрейший!

http://pyderasn.cypherpunks.ru/features.html
Решил я померить насколько PyDERASN мой стал медленнее и насколько
другие библиотеки стали быстрее, а то замеры скорости я делал на 1.0, а
сейчас 4.9, а pyasn1 был версии 0.2.3, а сейчас 0.4.5. Плюс решил
померится с asn1crypto библиотекой, которая вся из себя постоянно
заявляется в описании что она быстра.

Оказалось что PyDERASN всё же побыстрее asn1crypto на парсинге
CACert.org CRL-а, но при этом памяти ест на Python 3.5 почти в два раза
меньше. А вот на Python 2 она существенно быстрее, а памяти жрёт чуть ли
не в 3.5 раза меньше. pyasn1 в сильном отрыве и по памяти и особенно по
скорости работы.

Код asn1crypto детально не смотрел, но они пишут о том что делают lazy
обращения и парсинг полей. И вот если просто так взять и сделать
.load(), то да, они очень быстро отрабатывают. Однако, насколько
понимаю, парся только самые поверхностные слои! Я поэтому при
тестировании делают .native, при котором заставляю парсить всё, но при
этом он возвращает действительно родные Python объекты. Тогда как
PyDERASN умудряется и отпарсить и в высокоуровневых объектах всё
вернуть.

В общем я доволен своим изделием. Видимо, наследие ivi во мне остаётся и
поэтому PyDERASN такой быстрый и мало прожорливый. Хотя... там ещё точно
можно дико улучшать производительность, но в ущерб читаемости и простоты
кода.