Обычно я использую WinRAR вместо 7-Zip просто потому, что он быстрее и только немного менее эффективен при сжатии. Я провел несколько тестов для файлов разных типов и размеров, сравнивая настройки по умолчанию для 7-Zip и WinRAR с их обычным сжатием и наилучшим сжатием, и во многих случаях WinRAR был на 50% быстрее, а в некоторых - на 100% быстрее. Но мне больше нравится FOSS. Итак, вот мои вопросы:
- Есть ли способ ускорить 7-Zip? Я хотел бы, чтобы это было по крайней мере на одном уровне со скоростью WinRAR
- Есть ли способ сделать сегменты восстановления в 7-Zip, как вы можете в WinRAR? Я ничего не видел, но, думаю, это может быть из командной строки.
- Я протестировал WinRAR и 7-Zip, используя последнюю стабильную версию каждого (4-точечный что-то с 7-Zip). Бета-версия 9.x заметно быстрее при сжатии?
Я говорю о более быстром при сопоставимой настройке в WinRAR, а не просто о снижении до минимума сжатия.
Если это имеет значение, я использую четырехъядерный процессор Intel i7 720 (1,6 ГГц) / (2,8 ГГц) с 4 ГБ оперативной памяти DDR3, а также 64-разрядную версию 7-Zip и двухзагрузочную версию Debian x64 5.0.4 и Windows 7 Главная.
Ответы:
Если вы получите бета-версию 7-Zip 9.13, вы можете изменить тип архива на LZMA2 и, таким образом, сможете использовать столько потоков, сколько захотите, хотя использование памяти феноменально возрастает.
Установите бета-версию, щелкните правой кнопкой мыши материал, который вы хотите заархивировать, затем в контекстном меню 7-Zip нажмите «Добавить в архив ...», и вы получите нечто похожее на окно ниже. В левой части под «Compression Method» вы найдете «LZMA2», который позволит вам изменить количество потоков, что будет опцией чуть ниже.
Это может значительно увеличить производительность на> двухядерных процессорах, так как его можно лучше настроить для вашей системы, а обычный метод сжатия может обрабатывать максимум 2 потока.
«/ 1», которое вы видите справа от поля выбора количества потоков на изображении, - это количество процессоров в вашей системе и, следовательно, рекомендуемое количество потоков. Мой i7 является четырехъядерным процессором, но имеет гиперпоточность (что на самом деле помогает здесь, кстати), поэтому он отображается как "/ 8"
источник
Поскольку каждый поток, по-видимому, сжимает несколько файлов одновременно, лучшее, что вы можете сделать для увеличения производительности очень больших zip-заданий, это установить потоки равными 1, чтобы быть уверенным, что ваш жесткий диск будет искать по одному файлу за раз.
Мы повышаем производительность всех наших ежедневных процедур резервного копирования в zip-архивы, добавляя
-mmt=off
в командную строку 7-zip. Наша резервная копия «визуального репозитория SVN», которая состоит из нескольких небольших файлов, занимала от 50 до 60 минут.С
-mmt=off
, мы теперь всегда делаем менее чем за пять минут! И в течение этих 50 минут все наши серверы работали очень медленно из-за поиска жестких дисков. Теперь все остается очень быстро в течение этих пяти минут.Для всего, что вы делаете на компьютере, активность жесткого диска всегда будет ниже, чем ваш процессор. Вы можете повысить производительность диска, отключив параллельные операции и убедившись, что жесткий диск последовательно читает (и записывает) ваши файлы.
Также лучше читать с диска 1 и записывать ZIP на диск 2, так как физическая голова не переходит от чтения к записи.
Пример строки, чтобы получить максимальную скорость ZIP при сохранении производительности вашего аппарата:
D:
иT:
2 разных физических дискаисточник
-mx=1
(который почти не сжат). Если вы не сжимаете, большая часть работы выполняется с жесткого диска. Если вы установите-mx=9
процессоры действительно нужно работать, чтобы сжать файл. Я должен был бы попробовать это, но в зависимости от того, что является узким местом (жесткий диск или процессор), это могло бы быть лучше или хуже.-mmt=off
быстрее даже с-m0=lzma2 -mx=5
. (Без-mmt=off
: реальный 1m27.811s, пользователь 2m4.976s, sys 0m3.729s . С-mmt=off
: real 1m18.896s, пользователь 1m17.160s, sys 0m1.661s )Все алгоритмы сжатия, которые я использовал недавно (ZIP, RAR, 7z, tar / bzip2), связаны с вводом-выводом, а не с процессором. Наблюдение за MenuMeters на моем ноутбуке Mac показывает постоянную активность диска, но только 50% или меньше активности процессора.
Таким образом, способ ускорить сжатие / распаковку состоит в том, чтобы ускорить ваш диск. Это не всегда возможно.
Мое «решение» этого состоит в том, чтобы просто сделать что-то еще, пока я что-то сжимаю. :-)
источник
В моей компании мы работаем со старой версией 7-zip (бета-версия 4.52) и выполняем следующую команду:
Это работает нормально, но после обновления до новой версии 16.04 (32-разрядной) производительность сильно упала, поэтому я решил вернуться к старой версии.
источник
Еще один маленький трюк для повышения производительности при использовании кода, подобного этому примеру:
если возможно, в массиве $ ListDir перечислены каталоги по размеру, от наименьшего к наибольшему. Это происходит потому, что в каждом цикле foreach 7zip создает временный файл, который больше (или больше) исходного, а затем добавляет в него новый файл. Я пробовал в случаях, когда есть два или более каталогов размером несколько МБ и один большой много ГБ, и экономия времени составляет порядка нескольких минут.
источник
Я предполагаю, что ускорение 7-Zip невозможно без переписывания его алгоритмов сжатия / распаковки, может быть какая-то подстройка, которая увеличивает скорость, но это, вероятно, будет только увеличением на 10 или 15%, а не массовым Увеличение на 50-100%, что вы ищете.
источник