Skip to content

Compress and decompress with QuickLz while keeping low the Garbage Collector (NET Standard)

License

Notifications You must be signed in to change notification settings

LunaMultiplayer/CachedQuickLz.Core

Repository files navigation

PayPal Chat on discord

Nuget Latest release Total downloads Total hits


Cached compression/decompression with QuickLz

Allows you to compress and decompress with QuickLz while keeping low the GC pressure

Main features:

  • Fast compression/decompression using QuickLz 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:
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:
//"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:
var array = ArrayPool<byte>.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:
ArrayPool<byte>.Recycle(array);

Status:

Branch Build Tests
master AppVeyor AppVeyor Tests

Email: gavazquez@gmail.com License

About

Compress and decompress with QuickLz while keeping low the Garbage Collector (NET Standard)

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

No packages published

Languages