Этот сайт — моя персональная записная книжка. Интересны мне, по большей части, программирование, история и события из моей жизни.

Какой RLE лучше-2

Какое-то время назад я сравнивал два разных алгоритма сжатия RLE. Один вспомнил сам, а второй прислал один из читателей.

Они по-разному устроены, но оба используют для сжатия простой принцип — вместо повторяющейся последовательности записывать её длину. Я тогда написал небольшой скрипт на Пайтоне, чтобы сравнить эти два алгоритма на бинарных файлах в моей папке «Загрузки» и посмотреть что получится.

Оказалось, что более сложным алгоритмом я кодирую неправильно, так как в нём потенциально есть несколько стратегий кодирования одной и той же последовательности, чего я не увидел и не учёл в своей программе. На это мне попенял читатель, который мне когда-то и прислал этот алгоритм.

У меня всё никак не доходили руки аккуратно переписать свой скрипт, чтобы учесть замечание, но сегодня я не вытерпел и сделал некрасиво, практически перебором. Правда двухбайтный счётчик повторов делать не стал, наверное он тоже повлиял бы, но пока что-то времени нет дописать это место.

В общем, новые результаты такие. Использовал на той же папке, что и в прошлый раз, но с той поры её состав немного поменялся. Алгоритм, который вспомнил я, лучше сжал 440 файлов, который предложил читатель — 4159, не удалось сжать вообще — 2507 файлов.

Прежний результат был такой: 1811 лучше сжал «мой» алгоритм, 2152 — читательский, в 3193 случаях не справился ни один из алгоритмов.

В общем, соотношение сильно изменилось.