Создайте установщик с Inno Setup быстрее - PullRequest
0 голосов
/ 31 декабря 2018

Когда я запускаю Inno Setup для большого набора файлов (> 2 ГБ), это занимает много времени для запуска.Я считаю, что он тратит свое время на сжатие, которое должно быть привязано к процессору, но он использует только пару процессоров.Есть ли способ распространить это на (много) больше ядер?

В частности, я работаю с этим репозиторием Boost-Release , который имеет сценарий Inno Setup, который включает в себя:

[Setup]
....
Compression=lzma2/ultra64
....

[Files]
Source: "boost_1.69.0/*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs ignoreversion
....

Для вызова Compil32.exe boost_installer.iss требуется около 25 минут на компьютере с 16 ядрами и 32 ГБ ОЗУ (Azure F16s v2).

Набор файлов составляет примерно 2,5 ГБ, из которых 2 ГБ - это набор из примерно 300 скомпилированных библиотек.Оставшиеся 500 МБ - это 60 000 исходных файлов.

Ответы [ 2 ]

0 голосов
/ 04 января 2019

Итак, чтобы докопаться до сути, я создал тестовый проект , который прошел через все варианты различных вариантов конфигурации Inno Setup.

Те, которые я нашел полезными (идал мне улучшение скорости на 40%!):

SolidCompression=yes
LZMASeparateProcess=yes
LZMANumBlockThreads=6

Без SolidCompression, LZMANumBlockThreads не оказывает большого влияния.Но вместе я увидел более типичную проблему с возможностью распараллеливания, когда большее количество потоков давало более быстрые результаты (до определенного момента).

Если вы найдете это интересным, я бы порекомендовал рецензию Я сделал на нем, у него много данных для его резервного копирования.

0 голосов
/ 02 января 2019

Попробуйте установить LZMANumBlockThreads директиву (значение по умолчанию - 1):

При сжатии большого количества данных компрессор LZMA2 имеет возможность делить данныев «блоки» и сжимают два или более из этих блоков параллельно посредством использования дополнительных потоков (при условии наличия достаточной мощности процессора).Эта директива определяет количество используемых потоков, то есть максимальное количество блоков, которые компрессор LZMA2 может сжимать параллельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...