High performance C# implementation of the Snappy compression algorithm
OTHER License
Bot releases are hidden (Show)
Full Changelog: https://github.com/brantburnett/Snappier/compare/release/1.1.5...release/1.1.6
Published by brantburnett 9 months ago
Full Changelog: https://github.com/brantburnett/Snappier/compare/release/1.1.4...release/1.1.5
Published by brantburnett 9 months ago
This release primarily includes performance improvements around stream decompression in .NET 8, but does show some minor decompression improvements on other runtimes (except .NET 4.8 which is not a priority). Also includes a bug fix for a stream decompression corner case.
BenchmarkDotNet v0.13.10, Windows 11 (10.0.22621.3007/22H2/2022Update/SunValley2)
12th Gen Intel Core i7-1270P, 1 CPU, 16 logical and 12 physical cores
.NET SDK 8.0.101
Method | Runtime | Build | PGO | Mean | Error | StdDev | Ratio | RatioSD | Rank |
---|---|---|---|---|---|---|---|---|---|
BlockDecompress | .NET Framework 4.8 | Previous | N | 14.55 us | 0.089 us | 0.079 us | 1.00 | 0.00 | 1 |
BlockDecompress | .NET Framework 4.8 | Default | N | 15.78 us | 0.189 us | 0.158 us | 1.08 | 0.01 | 2 |
BlockDecompress | .NET 6.0 | Previous | N | 12.99 us | 0.151 us | 0.134 us | 1.00 | 0.00 | 2 |
BlockDecompress | .NET 6.0 | Default | N | 12.75 us | 0.181 us | 0.170 us | 0.98 | 0.02 | 1 |
BlockDecompress | .NET 8.0 | Previous | N | 10.57 us | 0.208 us | 0.214 us | 1.00 | 0.00 | 2 |
BlockDecompress | .NET 8.0 | Default | N | 10.30 us | 0.163 us | 0.152 us | 0.97 | 0.02 | 1 |
BlockDecompress | .NET 8.0 | Previous | Y | 10.51 us | 0.198 us | 0.194 us | 1.00 | 0.00 | 2 |
BlockDecompress | .NET 8.0 | Default | Y | 10.15 us | 0.173 us | 0.162 us | 0.97 | 0.02 | 1 |
Method | Runtime | Build | PGO | Mean | Error | StdDev | Ratio | RatioSD | Rank |
---|---|---|---|---|---|---|---|---|---|
StreamDecompress | .NET Framework 4.8 | Previous | N | 337.3 us | 6.35 us | 5.94 us | 1.00 | 0.00 | 1 |
StreamDecompress | .NET Framework 4.8 | Default | N | 332.4 us | 5.09 us | 4.51 us | 0.99 | 0.02 | 1 |
StreamDecompress | .NET 6.0 | Previous | N | 164.9 us | 2.57 us | 2.40 us | 1.00 | 0.00 | 2 |
StreamDecompress | .NET 6.0 | Default | N | 161.2 us | 3.21 us | 3.29 us | 0.98 | 0.02 | 1 |
StreamDecompress | .NET 8.0 | Previous | N | 194.4 us | 2.16 us | 2.02 us | 1.00 | 0.00 | 2 |
BlockDecompress | .NET 8.0 | Default | N | 189.6 us | 2.59 us | 2.42 us | 0.98 | 0.02 | 1 |
StreamDecompress | .NET 8.0 | Previous | Y | 201.7 us | 4.01 us | 4.45 us | 1.00 | 0.00 | 2 |
StreamDecompress | .NET 8.0 | Default | Y | 176.6 us | 3.49 us | 3.43 us | 0.87 | 0.03 | 1 |
Full Changelog: https://github.com/brantburnett/Snappier/compare/release/1.1.3...release/1.1.4
Published by brantburnett 11 months ago
Full Changelog: https://github.com/brantburnett/Snappier/compare/release/1.1.2...release/1.1.3
Published by brantburnett 12 months ago
Full Changelog: https://github.com/brantburnett/Snappier/compare/release/1.1.1...release/1.1.2
Published by brantburnett over 1 year ago
This release includes some fixes to logic that could have caused unsafe memory access in cases where GC rearranges memory if they occurred at the precise moment when an out-of-range reference was on the stack. These moments are very short-lived and should be impossible to create intentionally, but they still represent a security risk.
Full Changelog: https://github.com/brantburnett/Snappier/compare/release/1.1.0...release/1.1.1
Published by brantburnett over 1 year ago
This release no longer includes explicit support for the unsupported runtimes .NET Core 3.0/3.1 or .NET 5.0. These runtimes are now supported via the .NET Standard 2.0 target. While they should still function, it is untested and the lack of hardware intrinsic support will most likely result in degraded performance compared to 1.0.
This release sees a consistent improvement in both compression and decompression performance across all supported frameworks on my Core i7-10850H CPU, especially on decompression. On .NET 6, the time was reduced by 18% when compressing 64KB of HTML and 52% when decompressing. In some cases, the decompression time is reduced by as much as 66%.
Full Changelog: https://github.com/brantburnett/Snappier/compare/release/1.0.0...release/1.1.0
Published by brantburnett over 3 years ago
Note that this release is focused on performance on Intel/AMD x64 processes on .NET Core 3.1 or .NET 5. It uses Intel intrinsics extensively, so performance will be slower on other CPU architectures or runtimes.
Published by brantburnett almost 4 years ago
Various bug fixes found during beta
Published by brantburnett almost 4 years ago