Snappy

From EDM2
Jump to: navigation, search

Snappy is a compression/decompression C++ class library. It offers fairly moderate compression in return for high compression speeds and in particular excellent decompression speeds. Intended to be used for internal data compression in databases and similar applications rather than file compression, but in those sort of cases a low load decompression can in addition to saving space actually speed up reading and writing to and from slow peripherals such as hard drives.

Bindings

The software comes with C bindings, but there also exists an unofficial port to C.

The Snappy C++ class and the C bindings and port appear to compile fairly cleanly on OS/2 with the usual caveats about compiler and system differences and so on, however when it comes to foreign language bindings and ports you may for some of them need to do some additional work since some of the common Windows and Unix like implementations differ quite a bit from the OS/2 ones and a number of the current OS/2 implementations are getting quite old, the Java ports run like a charm though. In fact the library is written entirely in C++ with no in-line assembly and generic enough to be easily portable to most systems, although on single tasking systems like DOS they make little sense unless you are using something like TopSpeed C++ that can actually create DOS threads.

Other programming languages

Bindings are available for amongst others:

Ports/re-implementations:

  • Java, Common Lisp, C

Links

Ports
Re-implementations
Bindings

See also

  • LZ4 - Similar C library
  • LZO - Similar C library although much slower

Publications

License and status

Authors & publisher

  • Google
  • Andi Kleen (C port)
  • Robert Brown (LISP port)
  • Dain Sundstrom (Snappy in Java)
  • Masashi Umezawa (Squak port)
  • Binglin Chang (Java/JNI bindings)