当我在大量文件(>2GB)上运行 Inno Setup 时,需要很长时间才能运行。我相信它把时间花在了压缩上,这应该是 CPU 限制的,但它只使用了几个 CPU。有没有办法将其分散到(许多)更多核心?
具体来说,我正在处理这个提升发布存储库 https://github.com/teeks99/boost-release-windows/,其中有一个 Inno Setup 脚本,其中包括:
[Setup]
....
Compression=lzma2/ultra64
....
[Files]
Source: "boost_1.69.0/*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs ignoreversion
....
Calling Compil32.exe boost_installer.iss
在具有 16 个内核和 32GB RAM (Azure F16s v2) 的计算机上大约需要 25 分钟。
该文件集大约为 2.5GB,其中 2GB 是一组大约 300 个编译库。剩余的 500MB 是 60,000 个源文件。
为了弄清楚这一点,我创建了一个测试项目 https://github.com/teeks99/inno-test/经历了各种 Inno Setup 配置选项的各种排列。
我发现有用的(并且使我的速度提高了 40%!)是:
SolidCompression=yes
LZMAUseSeparateProcess=yes
LZMANumBlockThreads=6
Without SolidCompression
, the LZMANumBlockThreads
没有太大影响。但总的来说,我看到了一个更典型的可并行化问题,其中更多的线程提供更快的结果(在某种程度上)。
如果您觉得这很有趣,我会推荐writeup https://github.com/teeks99/inno-test/blob/master/README.md我做了它,它有很多数据来支持它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)