реклама на сайте
подробности

 
 
> Провееренные алгоритмы компрессии., Что можете посоветовать непрожорливого до памяти?
Velund
сообщение Jun 19 2006, 18:53
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 693
Регистрация: 19-11-04
Пользователь №: 1 177



Периодически вылезает нужда утоптать кое какие данные чтобы во флеше меньше места занимали. И каждый раз на что то натыкаешься - чаще всего на недостаток оперативки...

Вот и сейчас, с 1К оставшегося RAM пытаюсь понять, что бы такое использовать чтобы пожать своеобразный массив данных с блоками переменной длины, состоящий из текстовых строчек (в основном цифры и небольшой субсет латинских букв) в конце добитых нулями до нужной ширины поля.

Может кто нибудь посоветует что то непрожорливое до ресурсов? Есть обкатанная реализация LZW, но там с килобайтом оперативки доить как я понимаю нечего особо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 6)
apic
сообщение Jun 19 2006, 19:52
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 86
Регистрация: 18-06-05
Из: Москва
Пользователь №: 6 116



Вот например очень простой - "Unbuffered RLE" не сравнить с LZW , но все же..
Go to the top of the page
 
+Quote Post
Velund
сообщение Jun 19 2006, 20:10
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 693
Регистрация: 19-11-04
Пользователь №: 1 177



Цитата(apic @ Jun 19 2006, 23:52) *
Вот например очень простой - "Unbuffered RLE" не сравнить с LZW , но все же..


Это уж как то совсем до примитива доведено. ;-)
Go to the top of the page
 
+Quote Post
AndrewKirs
сообщение Jun 22 2006, 14:39
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 63
Регистрация: 5-05-06
Пользователь №: 16 804



Для LZW места не хватит (под словарь), а RLE в вашем случае будет эффективен только в конце поля, где одни нули. Если увеличить размер памяти никак нельзя, попробуйте какой-нибудь усеченный вариант LZ77 (с маленькой хэш-таблицей) или сжатие по Хаффману.
Go to the top of the page
 
+Quote Post
Romario
сообщение Jun 22 2006, 14:56
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 92
Регистрация: 26-06-04
Пользователь №: 192



стандартные алгоритмы сжатия это конечно хорошо, но как правило самый лучший вариант это , особенно зная чего эти данные из себя представляет, придумать свой (не велосипед а именно свой)

Вот Вы говорите что данные это в основном цифирьки, вот и упакуйте их 2 цифры в 1 байт.
честно говорюsmile.gif недавно была аналогичная проблема упаковывать данные - перепробовал кучу реализаций - ресурсов много жрут а сжимают не очень. В итоге дешево и сердито получилось
использовать банальный rle + разницу между значениями (благо данные у меня такие были)

p.s.
>>в основном цифры и _небольшой_ субсет латинских букв
например можно сделать таблицу перекодировки используемого словаря в непрерывну последовательность,
например, от 0 до 31 - уже можно жать 5 битами. ну и т.д.

Сообщение отредактировал Romario - Jun 22 2006, 15:06
Go to the top of the page
 
+Quote Post
Velund
сообщение Jun 23 2006, 19:30
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 693
Регистрация: 19-11-04
Пользователь №: 1 177



Тут на самом деле ключевое слово "проверенный". ;-) Потому как нагораживая на коленке что то свое и уникальное, надо его тщательно тестить (либо сильно думать над математикой процесса), чтобы не получилось например так, что при определенном сочетании байт во входном потоке оно встает раком или начинает генерить лажу. ;-)

Один раз знакомые в такое вступили, на уже запущенном в серию устройстве. Спасло их только то, что повторялось редко и апдейт был возможен достаточно несложным образом. ;-) Просто выкинули компрессию в апдейте.
Go to the top of the page
 
+Quote Post
Romario
сообщение Jun 24 2006, 10:34
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 92
Регистрация: 26-06-04
Пользователь №: 192



Как же без этогоsmile.gif свой "доморощенный" алгоритм я доолго тестил на "тест векторах" но все равно
в реальной работе через месяцок он сглючил на реальных данных. Сейчас вроде, тьфу тьфу стабильно все.

Удачи!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 20:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.0138 секунд с 7
ELECTRONIX ©2004-2016