spamsink: (Default)
spamsink ([personal profile] spamsink) wrote2022-07-22 07:30 pm
Entry tags:

Занимательная информатика

Берём большой файл со списком русских слов, включая словоформы. Он в кодировке Win-1251, а не в Unicode - или чтобы короче был, или потому что некоторые операционные системы до сих пор тупят. Его длина - 18265150 байт.

Чтобы смотреть на него в линуксе, делаем, как указано в инструкции,
iconv -f WINDOWS-1251 -t UTF-8 russian.txt > russian.utf-8

и получаем файл длиной 34993984.

Насмотревшись на этот файл, решаем его не выбрасывать, а сжать, попробовав оба варианта файла и две программы сжатия - gzip и bzip2, обе с ключом -9.

Итого, ls -lSr russian*
-rw-r--r-- 1 spamsink users  3814446 Jul 22 19:40 russian.txt.gz
-rw-r--r-- 1 spamsink users  4164422 Jul 22 18:27 russian.utf-8.bz2
-rw-r--r-- 1 spamsink users  4326903 Jul 22 18:25 russian.txt.bz2
-rw-r--r-- 1 spamsink users  4659786 Jul 22 19:41 russian.utf-8.gz
-rw-r--r-- 1 spamsink users 18265150 Jul 22 19:39 russian.txt
-rw-r--r-- 1 spamsink users 34993984 Jul 22 19:40 russian.utf-8


Меня позабавило не то, что russian.txt.gz самый маленький - это более или менее объяснимо, а то, что russian.txt.bz2 больше, чем russian.utf-8.bz2. Вот это я навскидку объяснить не могу.
lxe: (Default)

[personal profile] lxe 2022-07-23 03:05 am (UTC)(link)
Это лишний раз подтверждает, что если архиватору, как и человеку, давать передышку, его средняя производительность возрастет.

[personal profile] sassa_nf 2022-07-23 03:26 pm (UTC)(link)
16-bit Huffman codes?..

[personal profile] sassa_nf 2022-07-24 08:56 am (UTC)(link)
I don't get it how in your opinion the frequency of a could change.

My thinking was: if bz2 is looking for 2-byte sequences, then win-1251 has more unique 2-byte sequences than utf-8.

[personal profile] sassa_nf 2022-07-26 06:43 am (UTC)(link)
Interesting