All Projects → aloneguid → IronSnappy

aloneguid / IronSnappy

Licence: Apache-2.0 license
💾 .NET Managed port of Google Snappy

Programming Languages

C#
18002 projects

Projects that are alternatives of or similar to IronSnappy

wasm
fast wasm modules
Stars: ✭ 37 (+19.35%)
Mutual labels:  snappy
kafka-swoole
☝️Implement all kafka protocols, providing 'HighLevel' and 'LowLevel' client apis respectively, and utilize swoole to realize collaboration and flexibly extend consumers' client, which is the first php-kafka client to support multiple compression forms
Stars: ✭ 33 (+6.45%)
Mutual labels:  snappy
supersnappy
Dependency-free and performant Nim Snappy implementation.
Stars: ✭ 55 (+77.42%)
Mutual labels:  snappy
kcptun-asio
A kcptun based on c++11/asio, compatible with kcptun(golang)
Stars: ✭ 74 (+138.71%)
Mutual labels:  snappy
zig-snappy
Snappy compression for Zig
Stars: ✭ 25 (-19.35%)
Mutual labels:  snappy
snappy
Fastest Snappy compression library in Node.js
Stars: ✭ 110 (+254.84%)
Mutual labels:  snappy
Compress
Optimized Go Compression Packages
Stars: ✭ 2,478 (+7893.55%)
Mutual labels:  snappy
Archiver
Easily create & extract archives, and compress & decompress files of various formats
Stars: ✭ 3,373 (+10780.65%)
Mutual labels:  snappy
EasyCompressor
⚡ A compression library that implements many compression algorithms such as LZ4, Zstd, LZMA, Snappy, Brotli, GZip, and Deflate. It helps you to improve performance by reducing Memory Usage and Network Traffic for caching.
Stars: ✭ 167 (+438.71%)
Mutual labels:  snappy
nim-snappy
Nim implementation of Snappy compression algorithm
Stars: ✭ 14 (-54.84%)
Mutual labels:  snappy
pyrus-cramjam
Thin Python wrapper to de/compression algorithms in Rust - lightweight & no dependencies
Stars: ✭ 40 (+29.03%)
Mutual labels:  snappy
box
Box - Open Standard Archive Format, a zip killer.
Stars: ✭ 38 (+22.58%)
Mutual labels:  snappy
zstdmt
Multithreading Library for Brotli, Lizard, LZ4, LZ5, Snappy and Zstandard
Stars: ✭ 107 (+245.16%)
Mutual labels:  snappy
tiny
compress data for better performance
Stars: ✭ 21 (-32.26%)
Mutual labels:  snappy
RPC-SkillTree
干净的RPC全家桶thrift、dubbo、google-protocol-buffer,当然zookeeper注册中心是少不了的,其中在test的测试单元模块,我写了dubbo的底层实现原理(例如socket的RPC反射代理完成跨机器请求,同时还有RMI的代理模型)一看就能懂
Stars: ✭ 20 (-35.48%)
Mutual labels:  google-snappy

IronSnappy

This is a native .NET port of Google Snappy compression/decompression library. The only implementation that is stable, fast, up to date with latest Snappy improvements, and most importantly does not depend on native Snappy binaries. Works on Windows, Linux, MacOSX, ARM and so on.

It is originally ported from the Golang implementation because Go is much easier to understand and work with comparing to C++.

The library passes golden tests from the original implementation i.e. compares that compression/decompression is fully compatible with the original implementation.

Internally, it is using array pooling and spans for efficient memory allocation and low GC pressure.

Using

Reference the following NuGet package Nuget. You are ready to go.

To compress a buffer:

using IronSnappy;

byte[] input = File.ReadAllBytes("TestData/Mark.Twain-Tom.Sawyer.txt");
byte[] compressed = Snappy.Encode(input);

To decompress a buffer:

using IronSnappy;

byte[] input = File.ReadAllBytes("TestData/Mark.Twain-Tom.Sawyer.rawsnappy.txt")
byte[] uncompressed = Snappy.Decode(input);

Streaming Format

Streams are fully supported. To decompress use Snappy.OpenReader(Stream) and to compress Snappy.OpenWriter(Stream). Don't forget to flush 🚽 and dispose 🧻!

Contributing

Contributions are more than welcome, just raise an issue and fire a PR. The code might have a few ugly bits due to the fact it was ported as is from Golang, you are welcome to make it prettier and/or faster.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].