Wow. Thank you for making this. I'm frequently have to zip and unzip ~100GB of zip archive and I have to waste 10 minutes of waiting on a fast NVMe and 32 cores workstation. I know about ZSTD or pigz but the format must be zip.
7-Zip by Igor Pavlov can create zip files, has multi-threading and in my small test, comparing with the "pzip", was both as fast in "real" time and produced smaller file (while using similar amount of CPU but differently distributed between user and sys).
https://www.7-zip.org/download.html
Also, in my example the compression level of Info-Zip that best matched the one in pzip was -3 This can, of course, depend on the set.
~/c/measure_pzip$ time 7z -tzip -mx1 a a7.zip /usr/lib/apache2/*
7-Zip (z) 23.01 (x64) : Copyright (c) 1999-2023 Igor Pavlov : 2023-06-20
64-bit locale=en_US.UTF-8 Threads:3 OPEN_MAX:1024, ASM
...
real 0m0,074s
user 0m0,121s
sys 0m0,014s
~/c/measure_pzip$ time ./pzip a-p.zip /usr/lib/apache2/*
real 0m0,073s
user 0m0,097s
sys 0m0,038s
~/c/measure_pzip$ time zip -3 -r a-zip.zip /usr/lib/apache2/ >/dev/null
real 0m0,118s
user 0m0,114s
sys 0m0,004s
~/c/measure_pzip$ ls -l a*.zip | ./my2
1576511 a7.zip
1619733 a-p.zip
1613607 a-zip.zip
$ time zip -2 -r a-zip.zip 100mb/ >/dev/null
real user sys: 2,1 1,8 0,1
$ time 7z -tzip -mx=1 a a-7z-1.zip 100mb/ >/dev/null
real user sys: 1,0 2,7 0,0
$ time ../pzip a-pzip.zip 100mb/ >/dev/null
real user sys: 0,5 1,0 0,1
$ L a
48197707 a-7z-1.zip
49921626 a-pzip.zip
49553097 a-zip.zip
If the "classic" (i.e. the goal to unpack the archive using older programs) compatibility is not important, it could be interesting to consider that at least since 2020 zstd is officially a "standard" method for ZIP files too, allowing even faster compression speed for the same compression size targets. 93 - Zstandard (zstd) Compression
https://pkware.cachefly.net/webdocs/APPNOTE/APPNOTE-6.3.9.TX...I'm aware that there are some attempts of modifications of 7zip to allow using that method in ZIP files, but I don't know more than that:
https://github.com/mcmilk/7-Zip-zstd
https://github.com/mcmilk/7-Zip-zstd/issues/132
https://github.com/libarchive/libarchive/issues/1403
If ZIP target format is not a condition, here's the speed of using zstd on tar for the same input and approximately the same resulting size:
time tar -c 100mb | zstd -2 -o a.tar.zst 2>/dev/null
real user sys: 0,4 0,4 0,1
48585639 a.tar.zst