mirror of https://github.com/google/snappy.git
73 lines
3.8 KiB
Markdown
73 lines
3.8 KiB
Markdown
Snappy is a compression/decompression library. It does not aim for maximum
|
|
compression, or compatibility with any other compression library; instead, it
|
|
aims for very high speeds and reasonable compression. For instance, compared
|
|
to the fastest mode of zlib, Snappy is an order of magnitude faster for most
|
|
inputs, but the resulting compressed files are anywhere from 20% to 100%
|
|
bigger. On a single core of a Core i7 processor in 64-bit mode, Snappy
|
|
compresses at about 250 MB/sec or more and decompresses at about 500 MB/sec
|
|
or more.
|
|
|
|
Snappy is widely used inside Google, in everything from BigTable and MapReduce
|
|
to our internal RPC systems. (Snappy has previously been referred to as "Zippy"
|
|
in some presentations and the likes.)
|
|
|
|
For more information, please see the [README](../README.md). Benchmarks against
|
|
a few other compression libraries (zlib, LZO, LZF, FastLZ, and QuickLZ) are
|
|
included in the source code distribution. The source code also contains a
|
|
[formal format specification](../format_description.txt), as well
|
|
as a specification for a [framing format](../framing_format.txt) useful for
|
|
higher-level framing and encapsulation of Snappy data, e.g. for transporting
|
|
Snappy-compressed data across HTTP in a streaming fashion. Note that the Snappy
|
|
distribution currently has no code implementing the latter, but some of the
|
|
ports do (see below).
|
|
|
|
Snappy is written in C++, but C bindings are included, and several bindings to
|
|
other languages are maintained by third parties:
|
|
|
|
* C#: [Snappy for .NET](http://snappy4net.codeplex.com/) (P/Invoke wrapper),
|
|
[Snappy.NET](http://snappy.angeloflogic.com/) (P/Invoke wrapper),
|
|
[Snappy.Sharp](https://github.com/jeffesp/Snappy.Sharp) (native
|
|
reimplementation)
|
|
* [C port](http://github.com/andikleen/snappy-c)
|
|
* [C++ MSVC packaging](http://snappy.angeloflogic.com/) (plus Windows binaries,
|
|
NuGet packages and command-line tool)
|
|
* Common Lisp: [Library bindings](http://flambard.github.com/thnappy/),
|
|
[native reimplementation](https://github.com/brown/snappy)
|
|
* Erlang: [esnappy](https://github.com/thekvs/esnappy),
|
|
[snappy-erlang-nif](https://github.com/fdmanana/snappy-erlang-nif)
|
|
* [Go](https://github.com/golang/snappy/)
|
|
* [Haskell](http://hackage.haskell.org/package/snappy)
|
|
* [Haxe](https://github.com/MaddinXx/hxsnappy) (C++/Neko)
|
|
* [iOS packaging](https://github.com/ideawu/snappy-ios)
|
|
* Java: [JNI wrapper](https://github.com/xerial/snappy-java) (including the
|
|
framing format), [native reimplementation](http://code.google.com/p/jsnappy/),
|
|
[other native reimplementation](https://github.com/dain/snappy) (including
|
|
the framing format)
|
|
* [Lua](https://github.com/forhappy/lua-snappy)
|
|
* [Node.js](https://github.com/kesla/node-snappy) (including the [framing
|
|
format](https://github.com/kesla/node-snappy-stream))
|
|
* [Perl](http://search.cpan.org/dist/Compress-Snappy/)
|
|
* [PHP](https://github.com/kjdev/php-ext-snappy)
|
|
* [Python](http://pypi.python.org/pypi/python-snappy) (including a command-line
|
|
tool for the framing format)
|
|
* [R](https://github.com/lulyon/R-snappy)
|
|
* [Ruby](https://github.com/miyucy/snappy)
|
|
* [Rust](https://github.com/BurntSushi/rust-snappy)
|
|
* [Smalltalk](https://github.com/mumez/sqnappy) (including the framing format)
|
|
|
|
Snappy is used or is available as an alternative in software such as
|
|
|
|
* [MongoDB](https://www.mongodb.com/)
|
|
* [Cassandra](http://cassandra.apache.org/)
|
|
* [Couchbase](http://www.couchbase.com/)
|
|
* [Hadoop](http://hadoop.apache.org/)
|
|
* [LessFS](http://www.lessfs.com/wordpress/)
|
|
* [LevelDB](https://github.com/google/leveldb) (which is in turn used by
|
|
[Google Chrome](http://chrome.google.com/))
|
|
* [Lucene](http://lucene.apache.org/)
|
|
* [VoltDB](http://voltdb.com/)
|
|
|
|
If you know of more, do not hesitate to let us know. The easiest way to get in
|
|
touch is via the
|
|
[Snappy discussion mailing list](http://groups.google.com/group/snappy-compression).
|