Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » FreeArc (часть 4)

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152

Открыть новую тему     Написать ответ в эту тему

Widok



Moderator-Следопыт
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Часть 1 | Часть 2 | Часть 3


Скачать последний релиз - FreeArc 0.666 от 20 мая 2010 г. Что нового: ускорение работы в 1.5-2 раза благодаря новой технологии многопоточного сжатия, распаковка архивов многих форматов используя технологии 7-zip, запуск файлов из архива, исправлены все проблемы интеграции с Explоrer (подробнее)
Текущая альфа версия: 0.67 - загрузка | список исправлений | блог


Подробное описание используемых алгоритмов
Почему он сжимает лучше и быстрее, чем 7-zip/rar...
Результаты тестов, подтверждающие его крутизну...
Почему для использования 2+ гб памяти желательно установить 64-битную версию Windows
Планы дальнейшего развития
Что подразумевается под "интеграцией с Explorer"
Старая FreeArc wiki (включая описание формата архива)
Логотип и иконки FreeArc - обсуждение того, как облагородить внешний вид программы


Сторонние оболочки для работы с FreeArc:
wArc - простая и понятная программа управления архивами (требует .NET Framework 2.0)
PeaZip - менеджер архивов с поддержкой большого количества форматов, для Windows и Linux


Родственные темы:
Inno Setup плюс внешние упаковщики - использование архивов FreeArc в инсталяторах
ISDone.dll - библиотека распаковки архивов в инсталяторах
REP & SREP
Пережатиe/Pекомпрессия/Oптимизация файлов для лучшего сжатия - "а как сжать ещё лучше?"
FreeArc и Unix - для альтернативно одарённых
• репозиторий FreeArc 'Next на github.com
• тема FreeArc 'Next на форуме encode.su
• раздел FreeArc на форуме krinkels.org

 
Другие архиваторы:
WinRAR
7-zip
PowerArchiver
HaoZip
BandiZip


Всего записей: 24190 | Зарегистр. 07-04-2002 | Отправлено: 11:36 23-11-2010 | Исправлено: Nikolai2004, 21:23 03-02-2021
kalpak

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
snkreg
ты хочешь смерти моего винта? ))конечно можно
берешь арк пишешь arc a -mvariant1 archive files ; -mvariant2 archive files ;... >>output.txt
и потом мучайся разобрать его и придать вид таблицы
(была у меня такая таблица, но я забыл ее сохранить нормально, правда там были только встроенные алгоритмы, потому как precomp/srep на том файле нечего не давали)
но тут вопрос а что это за данные
Автор арка я думаю много разных тестов делает (ему же надо было определять алгоритмы для -m1..m9)

Всего записей: 155 | Зарегистр. 20-07-2007 | Отправлено: 11:31 24-09-2011
snkreg

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kalpak
Я же говорю, чтобы винт не умер - каждый архив сохранять в ТЕМР и удалять после сжатия. а на выходе нормальная отформатированная табличка. просмотрел, сделал выводы, ккой метод для тебя лучше - и уже заюзал его.

Всего записей: 586 | Зарегистр. 18-10-2008 | Отправлено: 19:24 24-09-2011
Profrager



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Ну прям к примеру сжимаешь 20Гб, ставишь на ночь - он у тебя проходится всеми возможными комбинациями, после каждой проходки архив удаляется

ночи явно не хватит) допуская шаг где то 5% каждого параметра от его максимального значения думаю пару недель пройдет пока все это завершится

----------
переехал сюда

Всего записей: 888 | Зарегистр. 22-05-2010 | Отправлено: 19:38 24-09-2011 | Исправлено: Profrager, 19:39 24-09-2011
vishyakov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
имхо ты накосячил в своей реализации его...ты делал анпакер своего ZRLE?

За него я спокоен, он очень хорошо протестирован и отработал в бою всё лето.
 

Цитата:
ты не так описал алгоритм

А как надо?
 
Цитата:
rep, входящий в алгоритмы фриарка

REP детектит только достаточно длинные последовательности (если не ошибаюсь, от 32 байт; такие zero runs действительно попадаются не часто), причём на каждую ссылку тратит 12 байт.
 

Цитата:
lzma... гораздо эффективней справятся с любыми последовательностями одинаковых байт

 
Вас послушать, так lzma вообще лучше использовать в одиночку. Ведь применение, например, dict перед lzma не ставится под сомнение. А zrle делает то же, что dict или rep: уменьшает объем данных сохраняя уровень избыточности, что уменьшает объем работы и увеличивает эффективный размер словаря lzma.
 

Цитата:
ибо не вижу + по сравнению в имеющимися алко во FA

Сжатие улучшается на величину до 1% без потерь в скорости. Это разве не плюс?
 

Цитата:
Опиши детальнее, если есть наработки - выложи.

Здесь бинарники, исходник на всякий случай, и немного статистики: ZRLE.rar

Всего записей: 29 | Зарегистр. 18-03-2009 | Отправлено: 20:31 24-09-2011 | Исправлено: vishyakov, 20:34 24-09-2011
Profrager



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Пусть встретилась последовательности нулей длинной k штук. Если k<N, то оставляем её как есть. Иначе заменяем её на k нулей плюс один байт равный k-N.

да, с рабочими вариантами программы стало понятней где ошибка в описании. Надо  так:
Цитата:
Иначе заменяем её на N нулей плюс один байт равный k-N.


Цитата:
REP детектит только достаточно длинные последовательности (если не ошибаюсь, от 32 байт; такие zero runs действительно попадаются не часто), причём на каждую ссылку тратит 12 байт.
реп, в отличие от rle, кодирует все найденные одинаковые последовательности на протяжении своего словаря в эти 12 байт, будь то нули, или любые другие произвольные значения каждого байта. Тут эти алгоритмы вообще сравнивать не стоит - они разного назначения, хоть и схожие по проихождению.

Цитата:
Вас послушать, так lzma вообще лучше использовать в одиночку. Ведь применение, например, dict перед lzma не ставится под сомнение. А zrle делает то же, что dict или rep: уменьшает объем данных сохраняя уровень избыточности, что уменьшает объем работы и увеличивает эффективный размер словаря lzma.
вот с последним предложением согласен. Да и почему именно нули? Можно же таким образом с любыми последовательностями байт сделать.
 
И в приведенной тобой таблице не понятно как-то. Данные для каждого режима разные что-ли?
Ну и в общем то плюс в этом не хитром алгоритме вижу только в отсутствии потребляемой памяти. С остальным rep и srep на низких значениях параметра -l ИМХО должны справиться лучше.
 
Добавлено:
P.S. все же всё это стоит проверить на различного рода данных и в достаточном объеме для подтверждения того или иного утверждения.

----------
переехал сюда

Всего записей: 888 | Зарегистр. 22-05-2010 | Отправлено: 23:43 24-09-2011
V2driver



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vishyakov И отвязать программу от фрейм ворка.

Всего записей: 462 | Зарегистр. 01-02-2010 | Отправлено: 07:29 25-09-2011 | Исправлено: V2driver, 07:30 25-09-2011
vishyakov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Иначе заменяем её на N нулей плюс один байт равный k-N.

Да, разумеется.
 

Цитата:
И в приведенной тобой таблице не понятно как-то. Данные для каждого режима разные что-ли?

Нет, одни и те же. Я приукрасил таблицу, чтоб понятней было. Ссылка та же: ZRLE.rar
 

Цитата:
Можно же таким образом с любыми последовательностями байт сделать.

Можно конечно, хотя таких на порядок меньше.
 

Цитата:
И отвязать программу от фрейм ворка.

Не охота возиться. Задача была предложить и обосновать идею, а работающая программа - это так, бонус. Кому сильно надо, тот запустит или напишет сам. Вообще, взаимодействие с внешними пакерами так, как сделано в FA - через файлы - жутко не эффективно. Вот бы можно было оформлять DLL-плугины...

Всего записей: 29 | Зарегистр. 18-03-2009 | Отправлено: 21:28 25-09-2011
Profrager



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Нет, одни и те же. Я приукрасил таблицу, чтоб понятней было
в прошлом варианте у тебя графы время и размер были перепутаны, что сбило меня с толку (ну или lister в тотал коммандере криво xls показывает)
 

Цитата:
Можно конечно, хотя таких на порядок меньше
но конечный эффект алгоритма же все равно повысится.
 

Цитата:
Вот бы можно было оформлять DLL-плугины..
у меня такие мечтания тоже были... пока Булат не сказал про cls фильтры) Так что это возможно) Примеры и реализацию смотри в исходниках FreeArc'а

----------
переехал сюда

Всего записей: 888 | Зарегистр. 22-05-2010 | Отправлено: 21:51 25-09-2011
Bulat_Ziganshin

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Profrager
http://freearc.org/download/testing/unarc2011-09-26.7z - теперь в загружаемых cls dll выполняются вызовы CLS_INIT и CLS_DONE, и выгружаются сами dll. проверь плиз. вместо op==-1 надо перехватывать op==CLS_DONE
 
там есть тестовая cls-test.dll (исходник simple_codec.cpp), которая это демонстрирует:
 

Код:
C:\>UnarcDllExample.exe t a.arc
 
simple_codec.cpp: 1
 
event("filename", 0, 0, "Arc.exe")
event("read", 0, 0, "")
event("read", 0, 0, "")
event("read", 0, 0, "")
event("read", 0, 0, "")
event("read", 0, 0, "")
event("read", 0, 0, "")
event("read", 0, 0, "")
event("write", 3, 0, "")
event("write", 3, 0, "")
event("quit", 0, 0, "")
FreeArcExtract() was successful
 
simple_codec.cpp: 2
 

 
строчки, выделенные жирным, напечатаны из cls-test.dll
 
Добавлено:

Цитата:
пока Булат не сказал про cls фильтры) Так что это возможно) Примеры и реализацию смотри в исходниках FreeArc'а

 
лучше в установленном FreeArc поискать simple_codec.cpp
 
кстати, FA поддерживает и использование stdin/stdout:
 
[External compressor:bzip2]
packcmd   = {compressor} {options} <stdin> <stdout>
unpackcmd = {compressor} -d        <stdin> <stdout>
 
 
Добавлено:

Цитата:
ZRLE.rar  

я попробовал zrle5 на 3 своих тестовых файлах - везде получилось хуже. можешь сам посмотреть:
 
http://freearc.org/download/testdata/dll100.7z
http://freearc.org/download/testdata/dll700.7z
http://freearc.org/download/testdata/MsOfficeBCJ.7z

Всего записей: 3401 | Зарегистр. 13-08-2007 | Отправлено: 08:56 26-09-2011 | Исправлено: Bulat_Ziganshin, 19:17 26-09-2011
Profrager



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Bulat_Ziganshin

Цитата:
http://freearc.org/download/testing/unarc2011-09-26.7z - теперь в загружаемых cls dll выполняются вызовы CLS_INIT и CLS_DONE, и выгружаются сами dll. проверь плиз. вместо op==-1 надо перехватывать op==CLS_DONE
спасибо, все работает (ток я unarc.dll компилил с SVN'а - очень удобно смотреть что поменялось в коде).

Цитата:
кстати, FA поддерживает и использование stdin/stdout
только этот метод какой-то не очень стабильный. И это не упрек в сторону фриарка, т.к. сам пытался реализовать клиент-хост передачу данных через stdin/out, и натыкался все на те же грабли - в некоторых случаях работает, в некоторых - нет. Так что вовсе отказался его использовать.

Цитата:
я попробовал zrle5 на 3 своих тестовых файлах - везде получилось хуже. можешь сам посмотреть
ну вот delta, например, тоже далеко не всегда дает выигрыш. Так же и тут - если на каких-то данных дает прирост (это тема для любителей многочисленных тестов), то можно включить к основным алгоритмам, возможно и с некоторыми доработками.
 
Добавлено:

Цитата:
http://freearc.org/download/testing/dll100.7z  
http://freearc.org/download/testing/dll700.7z  
http://freearc.org/download/testing/MsOfficeBCJ.7z
последние 2 архива не доступны для скачивания.
 
Добавлено:
З.Ы. я пока тож плюс в rle не смог получить.

----------
переехал сюда

Всего записей: 888 | Зарегистр. 22-05-2010 | Отправлено: 18:05 26-09-2011
Bulat_Ziganshin

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
последние 2 архива не доступны для скачивания.  

http://freearc.org/download/testdata/dll100.7z
http://freearc.org/download/testdata/dll700.7z
http://freearc.org/download/testdata/MsOfficeBCJ.7z
 

Цитата:
SVN'а - очень удобно смотреть что поменялось в коде)

для того его и держим  я сделал иначе чем ты предлагал, но надеюсь что будет работать не хуже. а порядку так больше
 

Цитата:
stdin/stdout
только этот метод какой-то не очень стабильный.

а в чём нестабильность выражается?

Всего записей: 3401 | Зарегистр. 13-08-2007 | Отправлено: 19:20 26-09-2011
vishyakov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
я попробовал zrle5 на 3 своих тестовых файлах - везде получилось хуже.

Да действительно, на одиночных файлах не получается. Я кажись догадался, в чем дело. Я когда жал каталог windows, zrle стоял до разбиения на солид-блоки. Соответственно, каждый блок содержал в среднем больше файлов, отсюда и получился плюс.
 
Однако, это навело меня на мысль, может быть имеет смысл ставить некоторые процессоры до разбиения на solid-блоки...

Всего записей: 29 | Зарегистр. 18-03-2009 | Отправлено: 20:14 26-09-2011
Bulat_Ziganshin

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vishyakov
проще увеличить размер солид-блоков. а вообще ничего удивительного. есть такое эмпирическое правило - если тебе удалось улучшить сжатие, значит ты в чём-то ошибся . хотя изредка оно всё же не срабатывает

Всего записей: 3401 | Зарегистр. 13-08-2007 | Отправлено: 21:33 26-09-2011
vishyakov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
проще увеличить размер солид-блоков

это приведёт к соответствующим осложнениям при распаковке, особенно файлов по-одиночке. А то, о чём я говорил - нет.

Всего записей: 29 | Зарегистр. 18-03-2009 | Отправлено: 15:07 29-09-2011
Bulat_Ziganshin

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
новая альфа:
  • GUI: option to show/hide hidden files (Hidden/System on Windows and ".*" on Linux) and Ctrl-H key toggling the option
  • CUI: at the end of program execution, prints "\n" even on Windows
  • CLS: implemented CLS_INIT/CLS_DONE and cls-*.dll unloading when unarc.dll is unloaded
  • CLS: pass all parameters to the cls-*.dll, delimiting them with ':' as usual
  • CLS: now supports execution in directories with non-Latin1 names (and non-Latin1 method names too)
  • unarc.dll: added encryption support
  • unarc.dll: in the case of error/UserCancel, wait for all decompression threads to be finished  before returning from FreeArcExtract()
  • unarc.dll: Addons\Unarc-DLL directory now contains readme-rus.txt describing dll usage and examples written in C++/Delphi/InnoSetup
  • unarc.dll: a lot of changes in FreeArcExtract() callbacks, see readme-rus.txt for details
  • arc.ini: improved bzip2 support

  • GUI: опция для показа/скрытия невидимых файлов (с атрибутом Hidden/System в Windows или именами ".*" в Linux) и кнопка Ctrl-H, переключающая эту опцию
  • CUI: в конце работы печатает "\n" - теперь и в Windows тоже
  • CLS: реализованы вызовы CLS_INIT/CLS_DONE, cls-*.dll выгружаются перед выгрузкой unarc.dll
  • CLS: в фильтр передаются все параметры, с разделением как обычно ':'
  • CLS: теперь cls-фильтры могут загружаться из каталогов с русскими (куитайскими...) именами и могут сами иметь русские имена
  • unarc.dll: поддержка зашифрованных архивов
  • unarc.dll: в случае экстренного выхода (при ошибке или по нажатию Cancel) ждёт завершения всех тредов распаковки перед возвратом из  FreeArcExtract(), советую выводить в это время на экран что-то вроде "Отмена распаковки..." поскольку это может продолжаться несколько секунд
  • unarc.dll: каталог Addons\Unarc-DLL теперь содержит readme-rus.txt, описывающий использование dll, и примеры на C++/Delphi/InnoSetup
  • unarc.dll: множество изменений в колбеках FreeArcExtract(), см. readme-rus.txt
  • arc.ini: улучшена поддержка bzip2

Всего записей: 3401 | Зарегистр. 13-08-2007 | Отправлено: 15:09 29-09-2011 | Исправлено: Bulat_Ziganshin, 15:11 29-09-2011
vasulpr

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
новая альфа:

надеюсь к финальной версии осталось немного!
 
PS: Спасибо за двуязычную историю изменений!

Всего записей: 126 | Зарегистр. 27-03-2011 | Отправлено: 15:33 29-09-2011 | Исправлено: vasulpr, 15:35 29-09-2011
kalpak

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Profrager
а precomp оригинальном системные функции запускались напрямую с kernel32/msvcrt?
или так же с packJPG.dll, если нет, то как ты их перенаправил в dll без модификации precomp.exe ?
 
я к чему все это, к тому что раз cls-precomp использует объекты синхронизации и packJPG подменный чтобы распаковывать "налету"
может как то можно их и упаковывать, потому как при работе прекомпа фал постепенно увеличивает размер (хотя дома та же версия программы ведет себя по-другому, имея размер 0 байт все время перед окончанием)

Всего записей: 155 | Зарегистр. 20-07-2007 | Отправлено: 16:06 29-09-2011
Vladimyr

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
множество изменений в колбеках FreeArcExtract
->  
 
множество изменений в вызовах FreeArcExtract
 
это ж вроде по-русски

Всего записей: 18 | Зарегистр. 15-09-2005 | Отправлено: 13:03 01-10-2011
Pasha_ZZZ



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Vladimyr
Цитата:
множество изменений в вызовах FreeArcExtract
Вызов - это вызов. Колбек - это обратный вызов, типа события.

Всего записей: 10135 | Зарегистр. 11-03-2002 | Отправлено: 13:27 01-10-2011
kalpak

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Bulat_Ziganshin
а CLS_DONE точно вызывается?
у меня что то не пишет нечего
 
я добавил вот эти строки в simple_codec.cpp

Код:
    case CLS_INIT:
        {
            printf("\nInit sample cls\n");
            break;
        }
    case CLS_DONE: //printf("Params: %s",param);
        {
            printf("\nDone sample cls\n");
            break;
        }
 

но выдает только инит.
 

Цитата:
C:\_TVS_V>arc a -msample+srep-io:l128:s300mb aaaaa-sample data.zip
 
Init sample cls
FreeArc 0.67 (September 29 2011) creating archive: aaaaa-sample.arc
Compressed 1 file, 83,862,364 => 39,965,501 bytes. Ratio 47.6%
Compression time: cpu 0.73 secs, real 8.25 secs. Speed 10,165 kB/s
All OK
 
 
C:\_TVS_V>unarc x -dppp  aaaaa-sample.arc
 
Init sample cls
FreeArc 0.67 unpacker. Extracting archive: aaaaa-sample.arc
Extracting data.zip (83862364 bytes)
All OK
 
C:\_TVS_V>

Всего записей: 155 | Зарегистр. 20-07-2007 | Отправлено: 09:51 03-10-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152

Компьютерный форум Ru.Board » Компьютеры » Программы » FreeArc (часть 4)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru

Рейтинг.ru