All Projects → endel → Fossildelta

endel / Fossildelta

Licence: other
An efficient delta compression algorithm written in C#

Projects that are alternatives of or similar to Fossildelta

Jsonschema Key Compression
Compress json-data based on its json-schema while still having valid json
Stars: ✭ 59 (-28.05%)
Mutual labels:  compression
Zip
Efficient library for manipulating zip archives
Stars: ✭ 69 (-15.85%)
Mutual labels:  compression
Deprecated Lame Mirror
[DEPRECATED] Old, Semi-official mirror of the CVS repository of the LAME MP3 encoder.
Stars: ✭ 73 (-10.98%)
Mutual labels:  compression
Theora
Reference implementation of the Theora video compression format.
Stars: ✭ 59 (-28.05%)
Mutual labels:  compression
Numcompress
Python package to compress numerical series & numpy arrays into strings
Stars: ✭ 68 (-17.07%)
Mutual labels:  compression
Opus
Modern audio compression for the internet.
Stars: ✭ 1,171 (+1328.05%)
Mutual labels:  compression
Goofy
Goofy - Realtime DXT1/ETC1 encoder
Stars: ✭ 58 (-29.27%)
Mutual labels:  compression
Compression
Learned image compression
Stars: ✭ 79 (-3.66%)
Mutual labels:  compression
Deepzip
NN based lossless compression
Stars: ✭ 69 (-15.85%)
Mutual labels:  compression
Html Compress Twig
Twig extension for compressing HTML and inline CSS/JS using WyriHaximus/HtmlCompress
Stars: ✭ 72 (-12.2%)
Mutual labels:  compression
Huffman
huffman encoder/decoder - intended for educational purposes
Stars: ✭ 61 (-25.61%)
Mutual labels:  compression
Woftool
woftool is a proof-of-concept utility for creating WOF-compressed files
Stars: ✭ 64 (-21.95%)
Mutual labels:  compression
Redoflacs
Parallel BASH commandline FLAC compressor, verifier, organizer, analyzer, and retagger
Stars: ✭ 71 (-13.41%)
Mutual labels:  compression
Csharpewah
Compressed bitmaps in C#
Stars: ✭ 59 (-28.05%)
Mutual labels:  compression
Ofxio
A collection of I/O core utils including a directory watcher, file filters and ordering, compression and more.
Stars: ✭ 78 (-4.88%)
Mutual labels:  compression
Efrt
neato compression for key-value data
Stars: ✭ 58 (-29.27%)
Mutual labels:  compression
Bolt
Fast approximate vector operations
Stars: ✭ 70 (-14.63%)
Mutual labels:  compression
Denoflate
WebAssembly powered Deflate/Gzip/Zlib compression for Deno, written in Rust
Stars: ✭ 80 (-2.44%)
Mutual labels:  compression
Squeezer
Flexible general-purpose compressor with a touch of citrus
Stars: ✭ 78 (-4.88%)
Mutual labels:  compression
Stdpack.c
Collection of small public domain de/compressors in plain C.
Stars: ✭ 73 (-10.98%)
Mutual labels:  compression

Delta compression algorithm for C#

Build Status

This is a port from the original C implementation. See references below.

Fossil achieves efficient storage and low-bandwidth synchronization through the use of delta-compression. Instead of storing or transmitting the complete content of an artifact, fossil stores or transmits only the changes relative to a related artifact.

Other implementations:

Installation

NuGet Gallery

FossilDelta is available on the NuGet Gallery.

You can add FossilDelta to your project with the NuGet Package Manager, by using the following command in the Package Manager Console.

PM> Install-Package FossilDelta

Usage

Fossil.Delta.Create(byte[] origin, byte[] target)

Returns the difference between origin and target as a byte array (byte[])

Fossil.Delta.Apply(byte[] origin, byte[] delta)

Apply the delta patch on origin, returning the final value as byte array (byte[]).

Throws an error if it fails to apply the delta (e.g. if it was corrupted).

Fossil.Delta.OutputSize(byte[] delta)

Returns a size of target for this delta.

Throws an error if it can't read the size from delta.

Benchmark

See the inputs used for benchmarking. Run the benchmarks locally using the make benchmark in your commandline.

Results:

       Method |           Mean |        StdErr |         StdDev |         Median |
------------- |--------------- |-------------- |--------------- |--------------- |
 CreateDelta1 |  5,426.4132 ns |   787.5304 ns |  6,201.0206 ns |  4,286.4851 ns |
 CreateDelta2 | 21,837.1107 ns | 1,661.4695 ns | 13,900.8509 ns | 25,942.1491 ns |
 CreateDelta3 | 11,697.2018 ns | 1,213.1634 ns | 12,607.5636 ns |  9,260.4452 ns |
 CreateDelta4 |    253.4085 ns |    25.1048 ns |    214.4952 ns |    252.6454 ns |
 CreateDelta5 |    150.4963 ns |    29.0635 ns |    311.6718 ns |      0.0000 ns |
  ApplyDelta1 |  3,547.0234 ns |   493.4131 ns |  4,357.7065 ns |  3,086.8397 ns |
  ApplyDelta2 | 20,336.7691 ns | 2,488.0257 ns | 27,254.9560 ns |  9,233.5811 ns |
  ApplyDelta3 |  1,441.5354 ns |   209.2071 ns |  1,995.7090 ns |    855.9650 ns |
  ApplyDelta4 |    252.5743 ns |    29.7323 ns |    234.1123 ns |    236.0480 ns |
  ApplyDelta5 |     68.5550 ns |     9.2923 ns |     92.4574 ns |     39.0918 ns |
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].