https://github.com/lunamultiplayer/cachedquicklz.core
Compress and decompress with QuickLz while keeping low the Garbage Collector (NET Standard)
https://github.com/lunamultiplayer/cachedquicklz.core
Last synced: 9 months ago
JSON representation
Compress and decompress with QuickLz while keeping low the Garbage Collector (NET Standard)
- Host: GitHub
- URL: https://github.com/lunamultiplayer/cachedquicklz.core
- Owner: LunaMultiplayer
- License: gpl-3.0
- Created: 2020-12-30T01:23:05.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2020-12-30T01:47:36.000Z (over 5 years ago)
- Last Synced: 2025-10-08T23:19:50.838Z (9 months ago)
- Language: C#
- Size: 74.2 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
---
# Cached compression/decompression with [QuickLz](http://www.quicklz.com/)
*Allows you to compress and decompress with [QuickLz](http://www.quicklz.com/) while keeping low the GC pressure*
### Main features:
- Fast compression/decompression using [QuickLz](http://www.quicklz.com/) algorithm
- Includes an array pool to request/recycle arrays in case you want to return them once you've compressed/decompressed their data
### Usage:
##### Compress:
```CSharp
var length = 5000;
var data = new byte[length]
//Fill up the "data" array...
CachedQlz.Compress(ref data, ref length);
//Now "data" is an array with the compressed bytes. If you want to check it's length use the variable "length"
//Do NOT use data.Length! It might be bigger as it came from a cached array!
```
##### Decompress:
```CSharp
//"data" is an array with compressed bytes...
CachedQlz.Decompress(ref data, out var decompressedLength);
//Now "data" is an array with the decompressed bytes. If you want to check it's length use the variable "length"
//Do NOT use data.Length! It might be bigger as it came from a cached array!
```
### Array pool usage:
##### Request an array from the pool:
```CSharp
var array = ArrayPool.Spawn(4);
//Caution, array.Length will 8 instead of 4 as the cache system uses values based on powers of two
```
##### Return an array to the pool:
```CSharp
ArrayPool.Recycle(array);
```
---
### Status:
| Branch | Build | Tests |
| ---------- | -------- | -------- |
| **master** |[](https://ci.appveyor.com/project/gavazquez/cachedquicklz/branch/master) | [](https://ci.appveyor.com/project/gavazquez/cachedquicklz/branch/master/tests)
---