]> Sergey Matveev's repositories - stargrave-blog.git/commit
Зарелизил PyDERASN 7.2
authorSergey Matveev <stargrave@stargrave.org>
Mon, 17 Feb 2020 17:51:02 +0000 (20:51 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Mon, 17 Feb 2020 17:51:02 +0000 (20:51 +0300)
commit897b4bf117836cc37b5b7bc3ce4fd5f48f80ec94
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904
parentc8983f79123569af5a157522060227244910a89a
Зарелизил PyDERASN 7.2

https://lists.cypherpunks.ru/pipermail/pyderasn-devel/2020-February/000040.html
На самом деле ещё вчера я полностью реализовал двухпроходное кодирование
DER: проходим по всем объектам в детерминированном порядке, высчитываем
кто сколько будет занимать места, запоминаем (кому надо) какую длину
надо будет закодировать, затем бежим уже второй раз, на лету сразу
записывая в некий writer все получающиеся закодированные значения.
Изменений в коде -- минимум. Но производительность существенно упала, а
я надеялся, что за счёт меньших пертурбаций с памятью, будет лучше. В
итоге забросил идею. А потом осенило: это ж позволит потокового (почти,
с сохранением state от первого прохода) записывать данные, а применяя
mmap-ы и итераторы, позволит формировать сколько угодно огромные DER-ы.
Сегодня сделал двухпроходное кодирование как альтернативу обычному, всё
работает, легко сделать многогигабайтный DER без проблем или с
миллионами элементов, в Python-е почти не отжирая память.