итак, выложил на сайт сырец с простейшей схемой csc: пока в ней куча проблем, но сейчас сырец позволяет увидеть как работает схема. у меня вопрос к кудесникам асма: насколько вы способны оптимайзить этот алгос. и, вообще, буду рад всякому сотрудничеству в реализации этих схем. сырец: http://xproject-all.narod.ru/csc_algo_debug_ver.7z а здесь ман по алгосам: http://xproject-all.narod.ru/csc_compressing_algos.pdf
Хм. 4 байта на букву... не во во всяком уникоде такое безобразие водится, а если встречается, то "сжать" его в 4 раза можно просто указав кодовую страницу Замена букв их адресами в файле по одному адресу на каждую букву - это что первое место на конкурсе неэффективных архиваторов?
возьми файл в 4 гб со средним повторением блоков по 4 байта 3 раза, а затем попробуй сжать LZW, к примеру, csc ужмет его на 3%. и, кстати, при чём здесь юникод - не надо путать понятие буква в контексте алгосов сжатия с буквой в контексте текстовых файлов.
UbIvItS Не нужно плодить посты - есть ссылочка "редактировать" Не понял - это как? Типа пример (есно не на 4Гб а на десяток блоков по 4 байта можно?)
читай ман там есть простая формула как расчитать длину поля адресации для блока длины m и файла длины n----------> lg2(n/m): длина поля адресации должна быть минимум на 2 бита меньше, чем длина блока, тогда будет сжатия - в обратном случае будет разбухание файла.
UbIvItS Я не про это спрашиваю - мне пожалуйста мааленький образец данных которые совсем не сжимаются lzv, зато цсц даст аж 1% экономии
UbIvItS Дык я никак от тебя не добьюсь, что ты имеешь в виду? ааааббббаааавввваааагггг блок из 4 байт "аааа" повторился 3 раза, это или что-то другое?
Так значит условия: 1. блок "аааа" больше не должен попасться в пределах 4Гбайт? 2. блок "бббб" встрется ещё 2 раза, но не более того? 3. повторяющиеся блоки считаются выровненными, т.е. в строке "аааабваааагд" нет повтора "аааа"? 4. расстояние между повторами произвольно? И ты считаешь такой набор данных имеющим малую избыточность и возможность сжатия его на целый 1% достижением? Хорошо подумаю , только сдаётся мне, что первое апреля "всё ближе и его контуры всё отчётливее" )
поведай мне зачем на данной строке юзать блок н 4 байта, когда и 8 бит достаточно, а для прямой адресации нужно 6 бит и еще + fin_bit, - в итоге 7 бит замещающий код. я не спорю, что существуют файлы, на которых повторяемость блоков, наибольшая, идет по нехорошим границам, но, во - первых, идеальных алгосов нет и быть не могет, так что для каждого алгоса есть х... туча файлов, так сказать, не хороших. а во - вторых, никто не отменял различные адаптации алгоса и алгосы препроцессинга файла перед сжатием.
Опять ты не в to step блоки из повторяющихся буковь, я привёл исключительно для того чтобы в глазах не мельтешило и повторы были наглядными Имхо совершенно очевидно что доп. пункты 1,2 полностью нейтрализуют этот недостаток - не хватит столько буковь на 4Гбайта ) Я тебя для чего выспрашиваю - хочу уяснить постановку задачи применительно к которой этот странный выигрыш в 1% является достижением Потому и объясни: пункты 1-4 полностью эту постановку задачи раскрывают или я чего-то упустил? А вопрос насколько это реальному файлу соответсвует есно пока оставляем за кадром.
файл имеющий повторы блоков размера 4 байта в среднем с частотой 3 вхождения каждой буквы(буквы выровнены по границе кратной 4 ) - вот на таких файлах и будет выйгрыш примерно 1% : что здесь не ясно.
вообще, хочу заметить, что, если адресацию проводить по произвольным границам, а не границам кратным длине блока, то уся эта затея по кодированью координат вырождается в форменное г..: накладные расходы на код возрастают до приделов словарных метод, а из-за рэндом доступа к файлу, скорость радует)
К утру дошло Не зря про это в сказках пишут Алгоритм интересный бу экспериментировать Только на мой взгляд для быстрого схватывания мануала в нём не хватает: Алгоритм сжатия разработан для случая когда файле есть повторы, но они хаотично разбросаны по всей длине файла и какой либо закономерности между ними не наблюдается. Поиск повторов ищется только среди выровненных блоков заданного размера. В рассматриваемом случае размер блока равен 4 байта. Терминология: буква - выровненный блок данных заданного размера алфавит - полный набор «букв» встретившихся в рассматриваемом файле хотя имхо выбор названий для терминов неудачный.