powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Экспресс-проверка данных на возможность сжатия
22 сообщений из 47, страница 2 из 2
Экспресс-проверка данных на возможность сжатия
    #39130030
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TНе подходит ни один показатель. в 10-15% случаев ошибаются.а сильно ли ошибаются?
Можно выбрать какой-либо показатель и сдвинуть его критерий так, чтобы эти 10-15% файлов не сжимались.
Итоговые потери на объеме всего множества файлов относительно идеального случая, думаю, будут невелики.
...
Рейтинг: 0 / 0
Экспресс-проверка данных на возможность сжатия
    #39130055
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точнее всего дисперсия
СжатиеДисперсияПервые 12858%0.02245214463%1.84351819563%0.19617817163%0.19657617165%0.20422317265%0.20422317267%0.21141217267%0.21141217268%1.63458818768%0.18020916968%0.18020916968%0.02192814372%0.60984917277%0.39442515778%0.53075615880%0.14296616580%0.14296616580%0.15039716580%0.15046116581%0.62528220981%0.13440916381%0.13440916383%0.01668514184%0.13756316484%0.13697316487%1.42316819588%0.06305614689%0.71745916989%0.295146147

Обрезал по сжатию 90% получилась граница 1,97. В таблице все где дисперсия < 1,97 и сжатие < 90%
Достаточно много где сжатие < 80%
Всего 200 файлов с сжатием > 90% (т.е. плохо жмутся)

Целиком результаты в файле.
...
Рейтинг: 0 / 0
Экспресс-проверка данных на возможность сжатия
    #39130109
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Вам конечно видней, но мне кажется вас уносит. Вы решаете задачу которую доконца не сформулировали даже.
Опищите сначала условия задачи математическим языком.
Пусть:
Тпер(Х) - функция для времени на передачу сообщения размером Х.
В обшем случае можно допустить Тпер(Х) = Х/А
где А - пропускная способность канала

Тарх(Х, К) - функция для времени на архивацию сообщения размером Х с коеффициентом сжатия К. ( К > 0)

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

Т = Тпер(К * М) + Тарх(М, К)

Задача поиска минимума. Найти производную функции и решить дТ/дК = 0
Здесь просто но уже сдесь очевидно что рещение будет зависеть от А.

Осталось самая малось: найти мат модель для Тарх(Х, К)
Я предположу: Тарх(Х, К) = Н * Х * 2^-К + С
где С - время инициализации архиватора, Н - энтропия сообщения

В итоге решение будет зависит всегда от Н, К, А.
...
Рейтинг: 0 / 0
Экспресс-проверка данных на возможность сжатия
    #39130134
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronОпищите сначала условия задачи математическим языком.
Опухнешь описывать. Время на запаковку очень сильно зависит от содержимого. Результат запаковки тоже. Скорость канала тоже величина не постоянная.
Канал и передача это было отвлечение от темы. Попутное исследование: какой вид сжатия предпочтительней.

Тема: "Экспресс-проверка данных на возможность сжатия". Т.е. как не тратить время на сжатие того что не жмется.
...
Рейтинг: 0 / 0
Экспресс-проверка данных на возможность сжатия
    #39130154
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Склоняюсь к мысли просто сделать вместо одного метода Send() два: SendWithPack() и SendAsIs().
А дальше пусть верхний уровень решает который из двух вызывать. Там известно что за инфа, т.е. есть ли смысл ее паковать. Минус один: переписывать надо.
...
Рейтинг: 0 / 0
Экспресс-проверка данных на возможность сжатия
    #39130195
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TСклоняюсь к мысли просто сделать вместо одного метода Send() два: SendWithPack() и SendAsIs().
А дальше пусть верхний уровень решает который из двух вызывать. Там известно что за инфа, т.е. есть ли смысл ее паковать. Минус один: переписывать надо.Сделайте три - текущий метод (с некоей автоматикой, пусть и приблизительной), SendWithPack() и SendAsIs(). Тогда переписывать можно будет плавно, не ломая всей структуры, и начиная с тех мест, где наиболее точно известно, нужно сжимать или нет.
...
Рейтинг: 0 / 0
Экспресс-проверка данных на возможность сжатия
    #39130197
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Можно текущую функцию дополнить необязательным параметром. Если указан - жмем или нет, если не указан - решает автоматика.
...
Рейтинг: 0 / 0
Экспресс-проверка данных на возможность сжатия
    #39130227
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TРасширений нет. На входе кусок памяти. Разбор заголовка тоже не вариант, много их всяких бывает

Apache mod_mime_magic справляется
...
Рейтинг: 0 / 0
Экспресс-проверка данных на возможность сжатия
    #39130745
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилможно проверить на "жатый" формат (mpeg,jpeg,gif, tiff (c анализом компрессии) , стандартные архивы и тп)
если пожат - не тратить силы+1

Любой текст, XML, DBF - сжимать. Любую картинку, ZIP - не сжимать.
...
Рейтинг: 0 / 0
Экспресс-проверка данных на возможность сжатия
    #39131143
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот идеальный пример файла почему метода не сработала
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
void bad_file() {
	FILE* file = fopen("file.bad", "wb");   
	if (file != NULL) { 
		for(int i = 0; i < 65536; i++) {
			char c = i % 256;
			fwrite(&c, 1, 1, file);
		}
		fclose(file);
	}
}


По всем моим оценкам файл совсем не жмется. В реале жмется почти в 100 раз (705 байт сжатый размер).

Т.е. метода была не для того. Она дает ответ на вопрос сжимаемы ли данные? Варианты ответов: точно жмутся и не знаю.
...
Рейтинг: 0 / 0
Экспресс-проверка данных на возможность сжатия
    #39131166
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПо всем моим оценкам файл совсем не жмется.а покажите оценки, если не секретные.
...
Рейтинг: 0 / 0
Экспресс-проверка данных на возможность сжатия
    #39131181
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftDima TПо всем моим оценкам файл совсем не жмется.а покажите оценки, если не секретные.
тут все 18569299
...
Рейтинг: 0 / 0
Экспресс-проверка данных на возможность сжатия
    #39131189
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftDima TПо всем моим оценкам файл совсем не жмется.а покажите оценки, если не секретные.
по итогам теста 18574342 понятно что алгоритм изначально в корне неправильный. Тут словарь надо строить и его оценивать. Что уже не экспресс оценка, а почти самопальный архиватор.
...
Рейтинг: 0 / 0
Экспресс-проверка данных на возможность сжатия
    #39131198
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tmiksoftпропущено...
а покажите оценки, если не секретные.
тут все 18569299 я имел в виду конкретно по файлу "file.bad".
интересно что ж за файл такой, что жмется аж в 100 раз, а статистикой себя не выдал.
...
Рейтинг: 0 / 0
Экспресс-проверка данных на возможность сжатия
    #39131207
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftя имел в виду конкретно по файлу "file.bad".
интересно что ж за файл такой, что жмется аж в 100 раз, а статистикой себя не выдал.
Вот же код создания файла 18574342 файл в аттаче
...
Рейтинг: 0 / 0
Экспресс-проверка данных на возможность сжатия
    #39131216
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tmiksoftя имел в виду конкретно по файлу "file.bad".
интересно что ж за файл такой, что жмется аж в 100 раз, а статистикой себя не выдал.
Вот же код создания файла 18574342 файл в аттаче

http://www.sql.ru/forum/actualfile.aspx?id=18574555] Приложенный файл (file.bad - 64Kb) Прошу прощения, не вчитался в код.
Видимо архиватор успешно ищет длинные одинаковые последовательности.
...
Рейтинг: 0 / 0
Экспресс-проверка данных на возможность сжатия
    #39131242
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftВидимо архиватор успешно ищет длинные одинаковые последовательности.
Проверка пудинга заключается в том, что его съедают.
...
Рейтинг: 0 / 0
Экспресс-проверка данных на возможность сжатия
    #39131248
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилПроверка пудинга заключается в том, что его съедают.
а рубероид как проверяют?
...
Рейтинг: 0 / 0
Экспресс-проверка данных на возможность сжатия
    #39131259
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftВидимо архиватор успешно ищет длинные одинаковые последовательности.
Ищет. Где-то в инете натыкался на алгоритм построения словаря из последовательностей, но нагуглить повторно не смог.
...
Рейтинг: 0 / 0
Экспресс-проверка данных на возможность сжатия
    #39132138
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для XML у меня где-то была статья про специализированные методы.

И есть еще мысль что для каждого формата файлов (executable, text, raster images)
надо применять специальный набор ключей (WinRAR поддерживает роскошный набор)
который находит некое золотое соотношение производительности (Mb/s) и
степени сжатия.

По поводу пудинга - практически на 100% согласен. Мы не можем предказать
как сожмём пока не прогоним алгоритм.

Оценочные методы - возможны но только для "однородных файлов". Например - поток
PCM (ИКМ) звука.
...
Рейтинг: 0 / 0
Экспресс-проверка данных на возможность сжатия
    #39132166
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonОценочные методы - возможны но только для "однородных файлов". Например - поток
PCM (ИКМ) звука.
Однородный файл поломал всю методу 18574342

Можно проще. Выше предлагали. Прочитать заголовок. Забить самые ходовые форматы (ZIP, RAR, JPG и т.д.). И наткнувшись на них сжатием не заниматься.
...
Рейтинг: 0 / 0
Экспресс-проверка данных на возможность сжатия
    #39132178
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TmaytonОценочные методы - возможны но только для "однородных файлов". Например - поток
PCM (ИКМ) звука.
Однородный файл поломал всю методу 18574342

Можно проще. Выше предлагали. Прочитать заголовок. Забить самые ходовые форматы (ZIP, RAR, JPG и т.д.). И наткнувшись на них сжатием не заниматься.
Согласен. Я как-то писал скриптики для бэкапа каталога проектов. NetBeans/Idea.
И там надо было ставить умные фильтры типа ... если директория начинается на точку
то не заходить туда. Или если есть два файла c одинаковым именем (сорц и к нему
отладочная инфа) то архивировать только сорц. + если файл jpg/gif/png и им
подобные то включать метод Store. Да много чего еще...
...
Рейтинг: 0 / 0
22 сообщений из 47, страница 2 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Экспресс-проверка данных на возможность сжатия
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]