Nathan Moinvaziri
Nathan Moinvaziri
Looks like `ALIGNED_` is defined from `HAVE_ATTRIBUTE_ALIGNED` which, maybe mean it possibly isn't detecting `attribute(aligned(x))` properly. I was looking at your CMake and I think in zlib-ng CMake we do...
> On platforms that don't allow unaligned memory access, calls to memcpy don't always get inlined in cases where they would on platforms with it. Do you have a Compiler...
This PR must be rebased. There are some conflicts in the nmake files.
## silesia.tar MSVC 19.38.33134.0 ### DEVELOP af494fc34f01878133806af7ad52f4e14f61c460 ``` OS: Windows 10 10.0.22631 AMD64 CPU: Intel64 Family 6 Model 151 Stepping 2, GenuineIntel Tool: ../zlib-ng/build-develop/Release/minigzip.exe Size: 105,472 B Levels: 0-9 Runs:...
With decompression ## silesia.tar MSVC 19.38.33134.0 ### DEVELOP af494fc34f01878133806af7ad52f4e14f61c460 ``` OS: Windows 10 10.0.22631 AMD64 CPU: Intel64 Family 6 Model 151 Stepping 2, GenuineIntel Tool: ../zlib-ng/build-develop/Release/minigzip.exe Size: 105,472 B Levels:...
AFAIK libdeflate requires whole-buffer and does not support streaming. So if all you look at is just speed then libdeflate will always win. On the higher levels zlib-ng compresses twice...
Why libdeflate is faster than vanilla zlib for decompression: https://github.com/ebiggers/libdeflate/blob/02dfa32da3ee3982c66278e714d2e21276dfb67b/lib/deflate_decompress.c#L32-L43
Additionally, libdeflate uses an extra 32KB hash table for 3-byte matches. I don't think we want to consume that much more memory. https://github.com/ebiggers/libdeflate/blob/02dfa32da3ee3982c66278e714d2e21276dfb67b/lib/hc_matchfinder.h#L69-L74
I like how it is split into `cpu_features` and `cpu_functions`.
Time to ditch nmake like I've been saying for years. :)