Skip to content

Commit a38694e

Browse files
committed
Merge branch 'develop'
2 parents 86c22cd + 751581a commit a38694e

File tree

8 files changed

+57
-14
lines changed

8 files changed

+57
-14
lines changed

Joveler.Compression.LZ4/CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## v5.x
44

5+
### v5.0.2
6+
7+
- Update NuGet README.
8+
59
### v5.0.1
610

711
Released on 2025-02-10
@@ -15,6 +19,7 @@ Released on 2025-01-31
1519
- (EXPERIMENTAL) Provides parallel lz4 compression.
1620
- (BREAKING CHANGE) Now targets .NET 8.0/.NET Framework 4.6.2/.NET Standard 2.0, to use TPL Dataflow library.
1721
- Upgrades packaged lz4 binaries to 1.10.0.
22+
- Adds support for nullable reference type information.
1823

1924
## v4.x
2025

Joveler.Compression.LZ4/Joveler.Compression.LZ4.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
<PackageId>Joveler.Compression.LZ4</PackageId>
1212
<Title>Joveler.Compression.LZ4</Title>
13-
<Version>5.0.1</Version>
13+
<Version>5.0.2</Version>
1414
<Authors>Hajin Jang</Authors>
1515
<Company>Joveler</Company>
1616
<Description>lz4 pinvoke library for .NET.
@@ -21,7 +21,7 @@ Supports Windows, Linux and macOS.</Description>
2121
<RepositoryUrl>https://github.com/ied206/Joveler.Compression</RepositoryUrl>
2222
<PackageIcon>images\Logo.png</PackageIcon>
2323
<PackageProjectUrl>https://github.com/ied206/Joveler.Compression</PackageProjectUrl>
24-
<PackageReleaseNotes>- Fix broken .NET Framework MSBuild script for copying native DLLs.</PackageReleaseNotes>
24+
<PackageReleaseNotes>- Update NuGet README.</PackageReleaseNotes>
2525
<PackageTags>lz4 lz4-hc lz4hc lz4-frame compress compression decompress decompression archive native pinvoke interop</PackageTags>
2626
<PackageReadmeFile>README.md</PackageReadmeFile>
2727
</PropertyGroup>

Joveler.Compression.LZ4/NUGET_README.md

+11-5
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,19 @@ Joveler.Compression.LZ4 can be installed via [nuget](https://www.nuget.org/packa
1010

1111
## Performance
1212

13-
**WARNING**: The library supports many customizable options, but performance is a bit slow due to pinvoke overhead. See [README.md](https://github.com/ied206/Joveler.Compression/blob/master/Joveler.Compression.LZ4/README.md) for details.
13+
**WARNING**: Due to LZ4's performant nature, P/Invoke overhead has a more negative effect on LZ4 than on conventional compression algorithms.
14+
15+
The overhead becomes trivial enough if you handle big files and focus on multithreaded high-level compression.
16+
17+
In decompression, pure managed implementation is much faster than this native wrapper.
18+
19+
See project README for more details.
1420

1521
## Features
1622

1723
- LZ4FrameStream, the stream for [lz4 frame format](https://github.com/lz4/lz4/blob/master/doc/lz4_Frame_format.md).
1824
- (EXPERIMENTAL) Parallel compression support on LZ4FrameStream.
1925

20-
## Tested liblz4 versions
21-
22-
- 1.9.4 (Included)
23-
2426
## Support
2527

2628
### Targeted .NET platforms
@@ -45,3 +47,7 @@ Joveler.Compression.LZ4 can be installed via [nuget](https://www.nuget.org/packa
4547
### Supported LZ4 versions
4648

4749
- 1.10.0 (Included)
50+
51+
## Usage
52+
53+
Please refer to the project homepage.

Joveler.Compression.LZ4/README.md

+32-3
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,15 @@ Joveler.Compression.LZ4 can be installed via [nuget](https://www.nuget.org/packa
1010

1111
## Performance
1212

13-
Please keep in mind that `Joveler.Compression.LZ4` have been uploaded to the nuget because it supports many customizable options, not best in performance.
13+
Due to LZ4's performant nature, P/Invoke overhead has a more negative effect on LZ4 than on conventional compression algorithms.
1414

15-
Decompression of `Joveler.Compression.LZ4` is similar or slightly faster than the pure C# implementation, [K4os.Compression.LZ4](https://github.com/MiloszKrajewski/K4os.Compression.LZ4). In the meanwhile the compression is about 50% faster to 2000% slower. Please be careful about performance when using it on production.
15+
If you mostly handle big files and focus on multithreaded high-level compression, `Joveler.Compression.LZ4` is the right choice.
16+
17+
If you mostly handle small files and are focused on performant single-threaded use, consider using [K4os.Compression.LZ4](https://github.com/MiloszKjewski/K4os.Compression.LZ4), the pure C# implementation. Its performance generally ties in with the native pinvoke method.
18+
19+
Suppose your use case involves mostly decompression, use [K4os.Compression.LZ4](https://github.com/MiloszKjewski/K4os.Compression.LZ4) as it is consistently faster.
20+
21+
Read the [Benchmark](#Benchmark) section for more details.
1622

1723
## Features
1824

@@ -56,7 +62,7 @@ See [CHANGELOG.md](./CHANGELOG.md).
5662

5763
`Joveler.Compression.LZ4` is licensed under [BSD 2-Clause license](./LICENSE).
5864

59-
## Performance
65+
## Benchmark
6066

6167
### Compression
6268

@@ -90,3 +96,26 @@ In multithread compression, performance of `Joveler.Compression.LZ4` scales line
9096
| lz4 | reymont.pdf | Fastest | 13,985 μs |
9197
| lz4-T2 | reymont.pdf | Fastest | 10,868 μs |
9298
| K4os | reymont.pdf | Fastest | 15,343 μs |
99+
100+
### Decompression
101+
102+
[K4os.Compression.LZ4](https://github.com/MiloszKrajewski/K4os.Compression.LZ4) is about twice faster than `Joveler.Compression.LZ4`.
103+
104+
| Method | SrcFileName | Level | Mean |
105+
|--------|-------------------|---------|------------|
106+
| lz4 | bible_en_utf8.txt | Default | 4,598.377 μs |
107+
| K4os | bible_en_utf8.txt | Default | 2,728.262 μs |
108+
| lz4 | bible_en_utf8.txt | Fastest | 4,966.349 μs |
109+
| K4os | bible_en_utf8.txt | Fastest | 2,807.782 μs |
110+
| lz4 | bible_kr_utf8.txt | Default | 5,673.352 μs |
111+
| K4os | bible_kr_utf8.txt | Default | 3,845.430 μs |
112+
| lz4 | bible_kr_utf8.txt | Fastest | 6,114.985 μs |
113+
| K4os | bible_kr_utf8.txt | Fastest | 3,753.987 μs |
114+
| lz4 | ooffice.dll | Default | 7,170.132 μs |
115+
| K4os | ooffice.dll | Default | 4,635.963 μs |
116+
| lz4 | ooffice.dll | Fastest | 7,587.325 μs |
117+
| K4os | ooffice.dll | Fastest | 4,743.326 μs |
118+
| lz4 | reymont.pdf | Default | 6,546.353 μs |
119+
| K4os | reymont.pdf | Default | 4,529.416 μs |
120+
| lz4 | reymont.pdf | Fastest | 7,243.303 μs |
121+
| K4os | reymont.pdf | Fastest | 4,760.949 μs |

Joveler.Compression.XZ/CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ Released on 2025-01-31
2020

2121
- (BREAKING CHANGE) Now targets .NET 8.0/.NET Framework 4.6.2/.NET Standard 2.0.
2222
- Upgrades packaged xz4 binaries to 5.6.4.
23+
- Adds support for nullable reference type information.
2324

2425
## v4.x
2526

Joveler.Compression.XZ/NUGET_README.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,9 @@
55
## Features
66

77
- XZStream, the stream for [.xz file format](https://tukaani.org/xz/xz-file-format.txt).
8+
- Parallel compression and decompression of XZStream.
89
- Fast native implementation of CRC32 and CRC64 checksums.
910

10-
## Usage
11-
12-
Please refer the [project homepage](https://github.com/ied206/Joveler.Compression/blob/master/Joveler.Compression.XZ/USAGE.md).
13-
1411
## Support
1512

1613
### Targeted .NET platforms
@@ -36,3 +33,6 @@ Please refer the [project homepage](https://github.com/ied206/Joveler.Compressio
3633

3734
- 5.6.4 (Included)
3835

36+
## Usage
37+
38+
Please refer to the project homepage.

Joveler.Compression.XZ/README.md

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ Joveler.Compression.XZ can be installed via [nuget](https://www.nuget.org/packag
1111
## Features
1212

1313
- XZStream, the stream for [.xz file format](https://tukaani.org/xz/xz-file-format.txt).
14+
- Parallel compression and decompression of XZStream.
1415
- Fast native implementation of CRC32 and CRC64 checksums.
1516

1617
## Support

Joveler.Compression.ZLib/CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ Released on 2025-01-31
1616
- (BREAKING CHANGE) Now targets .NET 8.0/.NET Framework 4.6.2/.NET Standard 2.0, to use TPL Dataflow library.
1717
- Provides APIs for combining two checksums.
1818
- Upgrades packaged zlib-ng binaries to 2.2.3.
19+
- Adds support for nullable reference type information.
1920

2021
## v5.x
2122

0 commit comments

Comments
 (0)