[Comm] ps2pdf

Alexey Tourbin =?iso-8859-1?q?at_=CE=C1_altlinux=2Eru?=
Ср Сен 3 01:42:01 MSD 2008


On Wed, Sep 03, 2008 at 01:07:26AM +0400, Alexey Tourbin wrote:
> On Wed, Sep 03, 2008 at 03:05:22AM +0700, Mikhail Gusarov wrote:
> > Twas brillig at 22:59:57 02.09.2008 UTC+03 when mike на osdn.org.ua did gyre and gimble:
> > 
> >  MS> Интересно, в чём проблема будет apt-file адаптировать...
> > 
> > В том, что contents_index - аааахренительного размера. И даже понятно,
> > как его можно катастрофически сжать - сделать radix tree, но ни у кого
> > руки не дошли.
> 
> Я как раз над этим думал, но что-то потерял интерес...
> http://git.altlinux.org/people/at/packages/path-trie.git

Тут ещё такое дело что кодироване указателями иногда ничего не даёт.
Напр. компонент "/usr" в строке занимает четыре байта, и укзатель тоже
занимает четыре байта, так что замена коротких компонентов пути на
указатель ничего не даёт.  Более того, игра в указатели имеет подводную
часть -- malloc bookkeeping (malloc is not *that* free) и фрагментация
памяти.

К тому же как мы будем сериализовать этот trie?  Berkeley DB
поддерживает только одноуровневое хранение ключ->значение.
На каждый ключ создается страница и т.д.  А ведь как раз желательно,
чтобы частые проходы по одному и тому же пути имели какой-то эффект
на буферный кеш ОС (то есть чтобы не всасывать весь файл целиком,
а только e.g. /usr/bin).

Реально наверное лучше всего делать ключ %{DIRNAMES} а значение
сериализованный блоб %{BASENAMES} -> %{NAME}.

Тогда как раз получается постраничное попадание в зависимости от
каталога.

$ rpm -qa --qf '[%{FILENAMES} -> %{NAME}\n]' |perl -pe 's#(.*)/#$1\t#' |sort
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 197 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/community/attachments/20080903/999c2b98/attachment-0002.bin>


Подробная информация о списке рассылки community