Ru-Board.club
← Вернуться в раздел «Программы»

» FreeArc: бесплатный open-source архиватор - Часть 2

Автор: egor23
Дата сообщения: 03.02.2009 16:15
Bulat_Ziganshin
в предыдущем топике, чёрт ногу сломит

Цитата:
я переделал lzma. сейчас он выделяет память трёмя кусками (8x, 1x и 1.5x)

для предыдущего lzma fast 4x, 1x и 1.5x
После ничего не менялось для "обычного" lzma?

Добавлено:

Цитата:
итого 650+82+512=1242

650 + 512 = 1162, и это могло быть выделено
кстати запрашивает 1325mb, немного не стыкуется c теорией
Автор: Bulat_Ziganshin
Дата сообщения: 03.02.2009 16:47

Цитата:
сейчас он выделяет память трёмя кусками (8x, 1x и 1.5x)

это для bt4. ht4 выделяет сначала 0.5x (округлённое вверх до степени 2) для хеша затем 1.125x для словаря


Цитата:
Просто нужно подумать поведение программы

мне кажется надо просто запреты сделать. на окончание имени архива на :\/, на присутствие в нём запрещённых символов

Добавлено:

Цитата:
650 + 512 = 1162, и это могло быть выделено
кстати запрашивает 1325mb, немного не стыкуется c теорией

я ошибся. 1.25x, а не 1.125x

650*1.25+512=810+512=1325
Автор: juvaforza
Дата сообщения: 03.02.2009 17:03
Bulat_Ziganshin
А если как в фаре - там сделаны замены (напр nam<e на nam(e ) и пропуски (напр * пропускает, na*me --> name)?
Но c : \ / надо аккуратно, они сейчас реально используется.
Автор: Bulat_Ziganshin
Дата сообщения: 03.02.2009 17:35

Цитата:
для предыдущего lzma fast 4x, 1x и 1.5x
После ничего не менялось для "обычного" lzma?

bt4/hc4 остались теми же (8x/4x+1x+1.5x)


Цитата:
А если как в фаре - там сделаны замены

а смысл?
Автор: juvaforza
Дата сообщения: 03.02.2009 18:04
Bulat_Ziganshin
Смысл например, экономит время. Можете и запретить символы.
Автор: CTACKo
Дата сообщения: 03.02.2009 19:25
2egor23

что-то я пыталсо за мыслью следить и нить эту потерял. ну, по логам судя, во всех случаях применялся метод лзма (как я и предполагал из-за кодирования контента), только в первом куске что-то на 559mb, а в остальных 3х - 650mb.
Про rep ни слова. Есть еще какие-то m1 (в архиве с видяхами) и m2 во всех остальных, и какие-то a2:128 - во всех случаях...
Так при каких же ключах можно получить обратно такое же сжатие?
Автор: Bulat_Ziganshin
Дата сообщения: 03.02.2009 22:09
CTACKo
смысл вот в чём: один из способов увеличить сжатие - это сделать больше словарь. в частности у тебя там видимо есть потворяющиеся данные на больших дистанциях

поэтому Егор полагал что это сжэато хорошо за счёт препроцессора rep. оказалось же, что скульптура просто использовал lzma с большим словарём

по дефолту эта настройка в -mx не используется поскольку сжатие идёт долго и выигрыш в сжатии не гарантирован. но если ты подюираешь наилучшее сжатие - попробовать можно. что касается ключей - то прочти доку для начала
Автор: egor23
Дата сообщения: 03.02.2009 22:13
CTACKo

Цитата:
что-то я пыталсо за мыслью следить и нить эту потерял. ну, по логам судя, во всех случаях применялся метод лзма

применяется lzma, только в FreeArc для lzma есть параметр - ht4 (Match finder - средство поиска соответствия для LZMA), в результате lzma может работать с большими словарями.

Цитата:
Есть еще какие-то m1

это параметры алгоритма lzma можно прочитать в документации раздел Параметры алгоритмов сжатия (про ht4 там не написано, т.к. документация старая), а также в Help-е к 7-zip ( http://gora.7zsfx.info/7-ziphelpru/7-Zip_Help_ru_4.65.7z ).

Цитата:
Так при каких же ключах можно получить обратно такое же сжатие?

при таких же настройках и на тех же наборах данных.
для data1.arc: -mlzma:559mb:a2:128:mc2

Цитата:
Про rep ни слова

мы просто гадали на кофейней гуще, что и как. обычно rep используется, для быстрого поиска повторов, перед основным алгоритмом, почему здесь его не использовали, я незаню.

Возьмём для простого примера данные из data3.arc
видео (вроде без звука),
сами файлы могут минимально упаковываться,
часть файлов байт в байт (по размеру данных будет ~50%),
другая не байт в байт, но если сжать два файла, которые по содержимому полностью отличаются но по размеру одинаковы, сжатие будет ~50%.

1. можно использовать настройки которые были
Arc.exe a a movies\ -mlzma:650mb:a2:128:mc1 -di -di+$%
но будьте внимательны FreeArc может уменьшить словарь, если будет "недостаточно памяти".

2. можно настройки минимизировать: зная что за данные, и что файлы будут засортированы по размеру, то выставим размер словаря 75МБ, т.к. размер самого большого файла 74.5МБ (чтобы lzma нашёл два одинаковых файла идущих подряд достаточно, чтобы размер словаря был = размеру файла).
Arc.exe a a movies\ -mlzma:75mb:a2:128:mc1 -di -di+$%
lzma:75mb:a2:128:mc1: 432.038.869 bytes in 423.734 seconds
Compression time: cpu 2.53 secs, real 563.72 secs. Speed 1.498 kB/s
получим архив 412МБ (432 040 641)

3. Добавим в цепочку алгоритмов rep, зная что за данные, и что файлы будут засортированы по размеру, то выставим размер словаря для rep 100МБ, т.к. размер самого большого файла 74.5МБ (чтобы rep нашёл два одинаковых файла идущих подряд достаточно, чтобы размер словаря был =1.25*размеру файла). для lzma возьмём словарь 20МБ (значение с потолка, т.к. данные имеют небольшое сжатие в начале файла)
Arc.exe a a movies\ -mrep:100m+lzma:20mb:a2:128:mc1 -di -di+$%
rep:100mb: 466.630.647 bytes in 13.438 seconds
lzma:20mb:a2:128:mc1: 431.695.498 bytes in 321.984 seconds
Compression time: real 404.00 secs. Speed 2.090 kB/s
получим архив 411.7МБ (431 697 277) + упаковка прошла быстрее, чем в п.2.

Добавлено:
Bulat_Ziganshin

Цитата:
lzma:650mb:a2:128:mc1

кстати a2 это как воспринимать?


Добавлено:
CTACKo

Цитата:
Основная причина разницы в доступной памяти лежит в видеокартах, вернее их памяти: 2.8Гб видяха с 512Мб, на 3Гб - 256Мб.

а какие видеокарты интегрированные или нет?
Автор: Bulat_Ziganshin
Дата сообщения: 03.02.2009 22:53
lzma2 появился. интересно, когда он пойдёт в массовую продажу? хорошо бы веснjq - я как раз надеюсь сделать 0.50 полностью мультитредовым

Добавлено:

Цитата:
кстати a2 это как воспринимать?

ну у меня в доке написано что a2 самое сильное сжатие, на самом деле сейчас уже a2=a1. если ты не в курсе, то это алгоритм более плотного сжатия, который применяется в 7zip -mx5 и выше
Автор: CTACKo
Дата сообщения: 04.02.2009 00:01
2egor23
спасибо за ликбез
скажите, rep 100Мб, означает поиск одинаковых файлов на расстоянии 100 метров, одинаковых фрагментов на том же расстоянии друг от друга, или же одинаковых фрагментов не больше 100Мб каждый на расстоянии не больше 100Мб друг от друга?

видяхи обычные PCIE. Да, что интересно, на системе 2.8Гб, забыл совсем, получилось 2 видяхи в системе, одна из которых интегрированная (nforce720a). Отключил интеграшку стало 3.25Гб ОЗУ, загружаюсь с ключем /3GB. Так что мое утверждение что основная разница доступной оперы лежит в видяхах - не совсем правда. Системы-то железно совсем разные...

PS Dead Space - весьма интересная игра (к примеру, на ag.ru - выбор редакции), раз уж скачал - рекомендую поиграть на досуге. Я ее прошел, мне понравилась.

Просто идейные мнения/соображения:
- чтобы фарк являлся полноценной альтернативой RAR/7zip необходима не только отточенная версия GUI, но и возможность распаковывать их форматы, т.е. как минимум это rar и 7z, а как максимум все то же что они умеют паковать и распаковывать, а это даже не всегда архивы - к примеру RAR умеет работать с ISO-образами как с архивами... В любом случае есть бесплатный unrar, который есть даже под платформу х64, правда консольная версия, и вообще это единственное что в RAR есть под х64...
- Кроме мультипоточночти/распараллеливания (сами понимаете и видите, сегодня производители процов ударились в мультиядерность) было бы неплохо создать "правдивую" х64 версию - за этими факторами будущее. Хотя я в курсе что мультипоточность - редкостный менингит в программировании, а под х64 кажись до сих пор нет официального компилятора...
- И еще было б неплохо использовать CUDA, это язык, который использует вычислительные возможности GPU от NVidia (если верить рекламе, то зачастую GPU по-сильнее CPU будет, особенно по FPU ). SDK бесплатен. Сам собой сей факт станет уникальной фичей! Не помню точно, возможно уже писал об этом... Кстати, возможно, на этом даже можно будет подзаработать, как на рекламе CUDA, правда это сомнительно и непросто...
Автор: Bulat_Ziganshin
Дата сообщения: 04.02.2009 01:39

Цитата:
возможность распаковывать их форматы

в конце концов я буду использовать 7z.dll, т.е. доступ будет ко всем форматам, поддерживаемым самим 7z


Цитата:
было бы неплохо создать "правдивую" х64 версию

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


Цитата:
CUDA

от куды пользы для архиваторов и большинства прочего софта нет


Цитата:
одинаковых фрагментов на том же расстоянии друг от друга

вот это
Автор: egor23
Дата сообщения: 04.02.2009 05:20
CTACKo

Цитата:
скажите, rep 100Мб, означает поиск одинаковых файлов на расстоянии 100 метров, одинаковых фрагментов на том же расстоянии друг от друга, или же одинаковых фрагментов не больше 100Мб каждый на расстоянии не больше 100Мб друг от друга?

1. означает поиск повторов на расстоянии 100МБ
2. с двумя последовательно стоящими файлами (с данными, которые повторяются и находятся последовательно) это так сказать частный случай.
3. 100МБ - для lzma это будет верно, для rep нет, как правило, для структур поиска требуется не более 25% от размера окна поиска (особенность rep), т.е. нужно выставлять словарь 1.25x, для 100МБ файлов нужен словарь 125МБ (для того чтобы полностью нашёл повтор, т.е. при словаре большем размера файла но меньшем 1.25xфайла, будет найдено не всё).

Цитата:
видяхи обычные PCIE. Да, что интересно, на системе 2.8Гб, забыл совсем, получилось 2 видяхи в системе, одна из которых интегрированная (nforce720a).

, а то как-то практика с практикой не сходилась
http://www.ixbt.com/soft/windows-4gb.shtml
а памяти у всроенной 256МБ было выставленно?

Bulat_Ziganshin

Цитата:
ну у меня в доке написано что a2 самое сильное сжатие

а где эта дока?
Автор: egor23
Дата сообщения: 04.02.2009 10:24
CTACKo

Цитата:
Системы-то железно совсем разные...

программы работают с виртуальной памятью, а не с физической, не важно сколько у вас стоит, хоть 128МБ.
читайте, читайте и ещё раз читайте доки...
Автор: Bulat_Ziganshin
Дата сообщения: 04.02.2009 13:36

Цитата:
а где эта дока?

я имею в виду доку по freearc, итам вроде есть описание параметров lzma
Автор: egor23
Дата сообщения: 04.02.2009 14:06

Цитата:
я имею в виду доку по freearc, итам вроде есть описание параметров lzma

a2 нету, может где по тексту, но поиск не находит.
Автор: PAQer
Дата сообщения: 04.02.2009 14:19

Цитата:
CTACKo

скачал я эти файлы и глянул... Это точно не PCM'ы, скорее всего adpcm. Но судя по тому, что размер папки 1.5гб там есть файлы намного более крупного размера, вот в них может быть PCM. Кстати у нас в сетке валяется репак этой игры размером в 2.85гб


Цитата:
a2 нету, может где по тексту, но поиск не находит.

я тоже нигде не встречал упоминание этой "a2"
Автор: egor23
Дата сообщения: 04.02.2009 14:24
PAQer

Цитата:
сетке валяется репак этой игры размером в 2.85гб

Repack.Skullptura 3.05ГБ, другого не видел.

Добавлено:

Цитата:
2. с двумя последовательно стоящими файлами (с данными, которые повторяются и находятся последовательно) это так сказать частный случай.

картинка общего случая для словарных алгоритмов (lzma, rep и т.п.)
для минимального словаря, чтобы найти повторы
Движется окно поиска (словарь) и ищет совпадения:



Bulat_Ziganshin
c rep что-то запамятовал откуда 1.25x(размер файла) (для двух одинаковых файлов, последовательно обрабатываемых)
rep.cpp не помогает, в терминах путаюсь.

Автор: PAQer
Дата сообщения: 04.02.2009 15:39

Цитата:
Repack.Skullptura 3.05ГБ, другого не видел.

http://rl-games.net/action/1148000744-dead-space-repackrus2008.html
вот этот походу
Автор: Bulat_Ziganshin
Дата сообщения: 04.02.2009 16:19

Цитата:
c rep что-то запамятовал откуда 1.25x

в lzma если запросить словарь 64 мега, то для него выделится 64*1.5 мб, после заполнения его до конца данные сдвигаются назад на 32 мб и таким образом всегда гарантировано что мы может найти любое совпадение на дистанции до 64 мег (совпадения большей дистанции отсекаются)

в rep/tor выделится ровно 64 мега, при сжвиге на 16 мег назад мы остаёмся с совпадениями до 48 мег. таким образом, макс. дистанция находимых совпадений колеблется от 48 до 64 мег
Автор: Bulat_Ziganshin
Дата сообщения: 04.02.2009 21:18
updated http://www.haskell.org/bz/arc1.arc

* GUI: no more freezes on chdir "c:"
* GUI: show totals in status bar at program start
* GUI: menu of available disk drives
* External/Tempfile: check for I/O errors
* External: check return code of external compressors

Егор, я добавил no-url версии в отдельном каталоге. если с ними памяти получается больше (они не должны цеплять wininet.dll), то я постараюсь сделать динамическую загрузку wininet.dll

Добавлено:
ещё забыл - посмотри, проблемы с Tahoma-22 остались?
Автор: Benchmark
Дата сообщения: 04.02.2009 22:07
Bulat_Ziganshin
По новой версии сходу:

1. Помнишь, как при нажатии на ArcInfo не на архиве FA падал ? Так вот сейчас при нажатии Test не на архиве - то же самое (спрашивает пароль, и после "ОК" падает).
2. Чтобы все-таки не падал при прерывании архивации.
3. Косметическая хотелка: чтобы FA запоминал ширину колонок при ее изменении.
Автор: juvaforza
Дата сообщения: 04.02.2009 22:23
Benchmark
Так должен запоминать уже. Ещё раз попробуй.
Автор: Benchmark
Дата сообщения: 04.02.2009 22:33
juvaforza

Цитата:
Так должен запоминать уже. Ещё раз попробуй.

Да, действительно, запонимает. До этого не запоминал, видимо, потому, что завершался "внештатно" - падением программы.

Bulat_Ziganshin
Кстати, неплохо бы было потихоньку рассортировать верхнее меню. Сейчас там все в одну кучу свалено.
Автор: Bulat_Ziganshin
Дата сообщения: 04.02.2009 23:07

Цитата:
неплохо бы было потихоньку рассортировать верхнее меню. Сейчас там все в одну кучу свалено.

дайте мне правильное - сделаю. кстати, заодно можно и производные команды добавить, типа "сделать sfx" или "добавить rr"

вообще, в будущем планирую сделать конфигурируемое меню. только не знаю, как лучше его конфигурировать - xml-файлом или обычным текстом в стиле yaml


Цитата:
чтобы FA запоминал ширину колонок при ее изменении.

ты видимо предыдущий update пропустил

вообще, что ещё осталось самого важного в плане usability?

по падениям осталось что-то помимо 2 вещей:прерывание архивации
открытие зашифрованного архива?

Добавлено:

Цитата:
Так вот сейчас при нажатии Test не на архиве - то же самое (спрашивает пароль, и после "ОК" падает).

а вот нет у меня такого. народ, проверьте
Автор: juvaforza
Дата сообщения: 04.02.2009 23:21
Bulat_Ziganshin
Кстати, а почему для неархивов и в случае других команд не сделать такой же диалог, как и для АркИнфр?

Добавлено:

Цитата:
а вот нет у меня такого. народ, проверьте

в последней бете нет.
Автор: Bulat_Ziganshin
Дата сообщения: 04.02.2009 23:28

Цитата:
Кстати, а почему для неархивов и в случае других команд не сделать такой же диалог, как и для АркИнфр?

а можно подробней для умственно отсталых?
Автор: Benchmark
Дата сообщения: 04.02.2009 23:28
Bulat_Ziganshin

Цитата:
дайте мне правильное - сделаю. кстати, заодно можно и производные команды добавить, типа "сделать sfx" или "добавить rr"

На правильное не претендую, но в качестве базового варианта (во многом похоже на WinRAR):

- меню File: New Archive, Open Archive, New SFX, Change Drive, Select All, Select Group, Deselect Group, Invert Selection
- меню Commands (или Actions): Add, Extract, Test, ArcInfo, View, Delete, Rename
- меню Tools: Wizard (если таковой будет), Protect, Comment, Convert to EXE, Encrypt, Add Recovery record, Repair
- меню Options: Configuration, Save settings, Load settings, View log, Clear log
- меню Help: собственно сам Help, Goto Homepage (и / или Check for update), About

плюс "кнопочное" меню должно настрииваться в зависимости от того, находимся ли мы в архиве или вне его.


Цитата:
а вот нет у меня такого

Запускаем FA, ставим курсор на любой файл, жмем Test, в диалоге Test никакой пароль не вводим, сразу жмем OK. Результат - вылет.
Автор: Bulat_Ziganshin
Дата сообщения: 05.02.2009 00:18

Цитата:
Результат - вылет.

а у меня нормально
Автор: egor23
Дата сообщения: 05.02.2009 01:10
Bulat_Ziganshin

Цитата:
они не должны цеплять wininet.dll

это недостаточно, т.к. system32\comctl32.dll используется ещё для других нужд, помино wininet.dll (определение каталого какого-то).

Автор: Bulat_Ziganshin
Дата сообщения: 05.02.2009 01:19

Цитата:
т.к. system32\comctl32.dll используется ещё для других нужд

а как узнать для чего именно?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051

Предыдущая тема: Universal Share Downloader (USD)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.