mirror of
https://github.com/LisherSong/ps5-web-file-manager.git
synced 2026-10-06 10:00:24 +02:00
Most 7z folders are a single plain LZMA2 coder (7-Zip default -m0=lzma2 -ms=on). For that shape the facade now drives the SDK's own parallel decoder (Lzma2DecMt, vendored with MtDec/Threads) instead of the single-threaded chain walk; the chain stays responsible for every other shape (BCJ2 stacks, encrypted folders, exotic methods) and as the fallback when the platform cannot provide threads (SZ_ERROR_THREAD downgrades, never fails). Adapters: ISeqInStream over the read_at callback, ISeqOutStream into the staging sink (runs on the calling thread, so the sink contract is unchanged), ICompressProgress polling the cancel hook. The folder CRC is taken over the decoded stream as before. 329 MiB fixture, internal timing: 1050 ms (asm, 1 thread) -> 930 ms (4 threads) -> 765 ms (8 threads + 1 MiB inBufSize_MT), i.e. 1.37x, now at parity with 7za -mmt=off (898 ms); 7za -mmt=8 is 485 ms. The PS5 count is 8 Zen 2 cores like the dev host; SZX_MT_THREADS=8. Test matrices: 7z 28 + ZIP 108 + RAR 27 checks green.