You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Inno Setup v6.2 安装解压无法充分利用CPU多核性能问题咨询

Inno Setup 大体积安装包解压阶段线程占用低、速度慢的解决方法

首先明确核心认知:islzma64.exe 仅在安装包编译压缩阶段运行,安装阶段的解压逻辑是直接内嵌在生成的安装包二进制中的,完全不会调用这个程序,调整它的相关配置对安装阶段性能没有任何影响,无需在这个文件上耗费精力。

你当前遇到的解压时仅3-4个线程满载、NVMe SSD占用率极低的问题,核心是现有压缩配置的逻辑限制,和硬件性能无关,按以下方式调整即可突破瓶颈:

  • 现有配置的核心限制项是SolidCompression=no:非固体压缩模式下,Inno Setup会对每个文件单独压缩、单独解压,而LZMA2的多线程调度仅对单个连续压缩块生效。你当前设置的字典大小仅1MB,加上2.2万个文件中大量小文件的单块体积远小于1MB,单个解压任务最多只能调用2-4个线程,且逐文件排队解压的线程切换开销极高,自然无法吃满CPU和SSD性能。
  • 你之前开启固体压缩触发16GB内存溢出,是因为未手动指定固体块大小,默认ultra64压缩等级下固体块大小会匹配总文件体积,31.5GB的总文件量必然导致内存占用超限,并非固体压缩模式不可用。

可直接替换的[Setup]段优化配置

LZMANumBlockThreads=24
LZMADictionarySize=67108864
LZMANumFastBytes=273
CompressionThreads=auto
DisableReadyPage=True
InternalCompressLevel=max
; 开启固体压缩,是多线程解压生效的前提
SolidCompression=yes
; 手动指定固体块大小为256MB,单块解压可稳定调用16-24个线程,单块峰值内存占用不超过3GB,16GB内存设备可稳定运行
SolidBlockSize=268435456
Compression=lzma2/ultra64
; 关闭逐字节进度计算,减少不必要的线程切换开销
ShowBytesProgress=False

额外优化建议

  • 对包内已压缩格式的文件(如JPG、MP4、已有压缩包、二进制资源等)单独配置不做二次压缩,可大幅减少编译和解压阶段的无效计算量,配置方式为在[Files]段对应文件条目中添加CompressionType=none标记。
  • LZMANumBlockThreads参数仅影响编译阶段的压缩速度,和安装阶段解压性能无关,可根据编译机的线程数灵活调整,不需要追求和总线程数完全一致。
  • 调整配置后可先做小批量样本测试:取10GB左右的混合大小文件按新配置打包,在测试机上运行安装,可观察到CPU线程占用会提升到16线程以上,NVMe SSD的读取占用也会同步上升,解压速度会有5-10倍的提升。

内容的提问来源于stack exchange,提问作者Michael Zexter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 17:27:34