суббота, 3 апреля 2010 г.

Улучшение zlib-сжатия для FTS3

Все бы хорошо с zlib-сжатием, но при вставке коротких строк или чисел оверхед получается многократный - сжатая строка в разы больше исходной. В качестве решения я решил не сжимать короткие строки (маньше 80 символов в данный момент), указывая 4-х байтный заголовок такой строки (содержит длину исходной строки, если строка сжата) как FFFFFF. Таким образом, эти строки легко распознаются при распаковке и оверхед минимален.

Замечу, что сначала попытался использовать типы данных - если строку не сжимаю, то возвращаю text, а не blob. На выходе функции compress() получается набор сжатых и несжатых строк. Оверхед меньше, но решение потенциально способно породить сложноуловимые грабли. Как минимум, определить, использовано ли сжатие для записей, станет сложно.

В моем деб-пакете с эскулайт это усовершенствование уже есть, а в fossil-репозиторий пока не добавил.

Комментариев нет:


(C) Alexey Pechnikov aka MBG, mobigroup.ru