-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Move to zlib-ng for better CPU intrinsics support (ARM64 performance) #87560
Comments
Tagging subscribers to this area: @dotnet/area-system-io-compression Issue DetailsThis was originally researched for inclusion in .NET 7, but then autoclosed due to inactivity. I'm making a new open issue to track this. There is also a closed PR #61883 with a great amount of context and discussion. The .NET Runtime repo currently maintains two external native libraries for zlib:
This means that ARM64 is not optimized, despite its increasing importance. The zlib-ng project has the optimizations of zlib-intel, as well as ARM64 optimizations. From zlib-ng's README:
I believe we could remove zlib and zlib-intel and replace them with the newer zlib-ng, which includes a superset of the optimizations in zlib and zlib-intel. Most of the work comes down to making dotnet's CMake configuration call zlib-ng's CMake configuration (perhaps via
|
Does the runtime static link zlib or does it use the system one on Linux platforms? |
@dotnet/area-system-io-compression any updates on this? At the moment, compression on Arm64 is limited to single core and takes 10 times longer in some cases than on otherwise similarly performing x86 hardware... This is really painful for PowerShell users as well. |
Closing this; it's now available in .NET 9 Preview 7 (release notes)! Work was tracked in #101465. |
This was originally researched for inclusion in .NET 7, but then autoclosed due to inactivity. I'm making a new open issue to track this. There is also a closed PR #61883 with a great amount of context and discussion.
The .NET Runtime repo currently maintains two external native libraries for zlib:
This means that ARM64 is not optimized, despite its increasing importance. The zlib-ng project has the optimizations of zlib-intel, as well as ARM64 optimizations.
From zlib-ng's README:
I believe we could remove zlib and zlib-intel and replace them with the newer zlib-ng, which includes a superset of the optimizations in zlib and zlib-intel.
Most of the work comes down to making dotnet's CMake configuration call zlib-ng's CMake configuration (perhaps via
add_subdirectory
). We cannot ignore zlib-ng's CMake configuration and build the source files directly, as zlib-ng's CMake configuration is responsible for enabling the optimizations during build. There is discussion around this in the PR linked above (#61883 (comment)).The text was updated successfully, but these errors were encountered: