FreeArc Fork

Shegorat

Lord of Madness
Администратор
FreeArc Fork - это попытка улучшить существующий FreeArc исправив существующие баги, и добавив новый функционал.

Здесь буду выкладывать сборки.
Также в этой теме принимаются багрепорты и предложения по улучшению
 

toolame

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

Shegorat

Lord of Madness
Администратор
Первый билд. Пока ещё не до конца разобрался во всей структуре кода, но это всё в процессе.
Обновил алгоритмы хеширования сжимаемых файлов. Больше всего прирост заметен на быстрых алгоритмах

FreeArc 0.67 (March 15 2014) Creating archive: data2_1.arc using storing
Memory for compression 256kb, decompression 256kb, cache 1mb
Compressing 1 file, 100,000,000 bytes 0%
Compressing enwik8
Compressed 1 file, 100,000,000 => 100,000,000 bytes. Ratio 100.00%
Compression time: cpu 0.09 sec/real 0.12 sec = 75%. Speed 800.31 mB/s
All OK

----------------------------
FreeArc 0.67 (March 15 2014) Creating archive: data2_2.arc using rep:128mb
Memory for compression 144mb, decompression 128mb, cache 1mb
Compressing 1 file, 100,000,000 bytes 0%
Compressing enwik8
Compressed 1 file, 100,000,000 => 99,855,895 bytes. Ratio 99.86%
Compression time: cpu 0.33 sec/real 0.17 sec = 190%. Speed 578.12 mB/s
All OK

----------------------------
FreeArc 0.67 (March 15 2014) Creating archive: data2_3.arc using tor:7:256mb
Memory for compression 386mb, decompression 257mb, cache 1mb
Compressing 1 file, 100,000,000 bytes 0%
Compressing enwik8
Compressed 1 file, 100,000,000 => 30,127,826 bytes. Ratio 30.13%
Compression time: cpu 5.41 sec/real 5.47 sec = 99%. Speed 18.27 mB/s
All OK

----------------------------
FreeArc 0.67 (March 15 2014) Creating archive: data2_4.arc using lzma:128mb:normal:bt4:32
Memory for compression 1352mb, decompression 128mb, cache 1mb
Compressing 1 file, 100,000,000 bytes 0%
Compressing enwik8
Compressed 1 file, 100,000,000 => 25,010,829 bytes. Ratio 25.01%
Compression time: cpu 61.75 sec/real 42.92 sec = 144%. Speed 2.33 mB/s
All OK

----------------------------
FreeArc 0.67 (February 07 2021) Creating archive: data1_1.arc using storing
Memory for compression 256kb, decompression 256kb, cache 1mb
Compressing 1 file, 100,000,000 bytes 0%
Compressing enwik8
Compressed 1 file, 100,000,000 => 100,000,000 bytes. Ratio 100.00%
Compression time: cpu 0.03 sec/real 0.09 sec = 33%. Speed 1067.16 mB/s
All OK

----------------------------
FreeArc 0.67 (February 07 2021) Creating archive: data1_2.arc using rep:128mb
Memory for compression 144mb, decompression 128mb, cache 1mb
Compressing 1 file, 100,000,000 bytes 0%
Compressing enwik8
Compressed 1 file, 100,000,000 => 99,855,895 bytes. Ratio 99.86%
Compression time: cpu 0.20 sec/real 0.14 sec = 144%. Speed 711.29 mB/s
All OK

----------------------------
FreeArc 0.67 (February 07 2021) Creating archive: data1_3.arc using tor:7:256mb
Memory for compression 386mb, decompression 257mb, cache 1mb
Compressing 1 file, 100,000,000 bytes 0%
Compressing enwik8
Compressed 1 file, 100,000,000 => 30,127,826 bytes. Ratio 30.13%
Compression time: cpu 5.27 sec/real 5.35 sec = 98%. Speed 18.68 mB/s
All OK

----------------------------
FreeArc 0.67 (February 07 2021) Creating archive: data1_4.arc using lzma:128mb:normal:bt4:32
Memory for compression 1352mb, decompression 128mb, cache 1mb
Compressing 1 file, 100,000,000 bytes 0%
Compressing enwik8
Compressed 1 file, 100,000,000 => 25,010,829 bytes. Ratio 25.01%
Compression time: cpu 55.70 sec/real 36.55 sec = 152%. Speed 2.74 mB/s
All OK

----------------------------
 

Вложения

Shegorat

Lord of Madness
Администратор

Shegorat

Lord of Madness
Администратор
@Edison007
Записал, но
1. Сломает совместимость версий. CRC32 надо будет заменить на blake2 а также добавить доп флаги в структуру архива
2. Хз зачем, но ладно
3. В принципе понятно зачем, но тут же от системы зависит. Надо отталкиваться от параметров таргет системы
 

Shegorat

Lord of Madness
Администратор
3. Опция, которая указывала бы для 4х4 в момент распаковки сколько потоков использовать.
Сделал, пока жестко устанавливает лимит потоков. И не обрабатывается опция -ld. Как сделаю нормально - выложу.

хочется чтобы 4х4 принимал на выходе от пакера больший размер чем указан в его блоке (сейчас он тупо обрезается)
Учитывая текущую структуру алгоритмов - сейчас сделать не получится
 

Shegorat

Lord of Madness
Администратор
Изменения:
  • 4x4: Добавил опцию "mdt<thread_count>"
  • rep: Фикс memory leak при ошибке упаковки
  • Мелкие изменения кода
  • Собрал unarc.dll, unarc.exe для поддержки внесённых изменений

З.Ы. Я приболел, поэтому изменений немного
З.З.Ы. Предлагаю собрать обновленный arc.ini и arc.groups на основе ваших изысканий в сжатии игр и программ, т.к. текущие давно устарели

Для справки:
arc.groups - позволяет определять группы файлов с похожим форматом (аудио, видео, изображения и т.д.) по их расширениям
arc.ini - позволяет определять готовые цепочки сжатия, в том числе и специфичные для групп файлов из arc.groups
 

Вложения

toolame

Старожил
Проверенный
Предлагаю собрать обновленный arc.ini
свои 5коп
Код:
[External compressor:ztool]
header = 0
default = :pzlib:m3:c16mb
packcmd   = ztool e{:option}:t1:st4:ct1 - - <stdin> <stdout>
unpackcmd = ztool d{:option}:t4 - - <stdin> <stdout>
datafile   = $$arcdatafile$$.tmp
packedfile = $$arcpackedfile$$.tmp

[External compressor:xtool]
header = 0
default = :t100p,c64mb:zlib:lz4:zstd:lzo:oodle
packcmd = {compressor}_x64.exe e:precomp{:option} - - <stdin> <stdout>
unpackcmd = {compressor}_x64.exe d:precomp:t100p,dm3 - - <stdin> <stdout>
datafile = $$arcdatafile$$.tmp
packedfile = $$arcpackedfile$$.tmp
насчет ztool не уверен поддерживает ли он указание кол-во тредов в процентах (t100p) поэтому 4
поправляйся!
 

Shegorat

Lord of Madness
Администратор
@toolame, в данном случае поля `datafile` и `packedfile` можно не указывать, т.к. они эквивалентны дефолтным значениям
 

Edison007

Ветеран
Модератор
Чет у меня 4х4 не хочет работать

Creating archive: data3.arc using 4x4:b8mb:r0:mpz
Memory for compression 160mb, decompression 20mb, cache 128mb
Compressing 16 files, 146,003,088 bytes
Compressing 1 (2) - Compressing 1 (2) - arc.exe: <stdout>: hFlush: invalid argument (character is not in the code page)
Compressing 1 (2) - Compressing 1 (2) - arc.exe: user error (Pattern match failure in do expression at ArcvProcessCompress.hs:130:8-22)


Код:
SET options=-r --dirs -s; -ep1 -di=acmwfdte# -i2 --logfile=farc.log -lc- -dm=lzma:a1:ht4:8mb:lc1:lp0:pb0:fb64 --cache=128mb --append -w.\
arc.exe a %options% -ds=ens -m=4x4:r0:b8m:mpz "data3.arc" "data\*"
С родным arc.exe норм
 
Сверху