@12rbah

Можно ли ускорить архивацию/разархивацию за счет распараллеливания ??

Насколько я знаю архивация/разархивация часто может упираться в HDD/SSD, поэтому задался вопросом вырастет ли производительность, если в стандартный алгоритм для zip изменить так чтобы архивация/разархивация могли производиться парралельно?
  • Вопрос задан
  • 3135 просмотров
Пригласить эксперта
Ответы на вопрос 5
Adamos
@Adamos
7z еще лет десять назад начал поддерживать многопроцессорную обработку архивов. Его собственный алгоритм потяжелее zip, но распаковывать zip-ы он тоже умеет.
7z -mmt={количество потоков}
Ответ написан
@kalapanga
У 7-zip есть опция для управления многопоточностью. Можете потестить или даже исходники посмотреть.
Ответ написан
Комментировать
@dmtrrr
Backend developer
Параллельные вычисления ускоряют CPU bound задачи.
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev
software engineer
pigz - многопоточный архиватор для gzip алгоритма.
winrar и 7zip тоже умеют в многопоточность
Ответ написан
Комментировать
@Mercury13
Программист на «си с крестами» и не только
Если использовать стандартную библиотеку сжатия (например, ZLIB), будет проблематично. Нужно как минимум писать своё сжатие с блэкджеком и многопоточностью.
Однако можно распараллелить разархивацию и интерпретацию того, что разархивировалось, и это помогает. Проверено (писал сохранение в простой блочный формат, запаковываемый в ZIP).
Архивация на ZLIB с высшей степенью сжатия упирается не в SSD, а в процессор. Тоже проверено. Для баланса между сжатием и остальной функциональностью установил степень сжатия в четвёрку.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы