Closed pauljurczak closed 5 months ago
There is assembler code for lzma decompression that can be used instead of default C code. asmc program is required: https://github.com/nidud/asmc To compile 7-Zip for x86-64 with asmc assembler:
make -j -f ../../cmpl_gcc_x64.mak
Do you mean that ASM
in 64-bit locale=en_US.UTF-8 Threads:4 OPEN_MAX:1024, ASM
indicates that I'm not comparing apples to apples?
Yes, ASM
word indicates that assembler code was used.
Proabably linux(ubuntu) maintainers for 7zip package don't want to use asmc
assembler.
asmc
is not standard assembeler for GCC/Linux.
7-Zip uses asmc
syntax, because asmc
is compatible with Windows assember - masm. And original assembler code of 7-Zip was developed for masm (Windows).
So asmc
allows us to use source code from Windows version also in Linux.
Thank you. This explains the difference in performance.
I've run a benchmark on Ubuntu 24.04 with a packaged version (GCC 13.2.0: SSE2) and a version from https://www.7-zip.org/download.html (GCC 9.4.0: SSE2). The former:
decompresses much slower (3914 MIPS) than the latter (5983 MIPS):