Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/thekvs/esnappy
Erlang bindings for Google's Snappy compression library.
https://github.com/thekvs/esnappy
erlang snappy-compression-library
Last synced: 28 days ago
JSON representation
Erlang bindings for Google's Snappy compression library.
- Host: GitHub
- URL: https://github.com/thekvs/esnappy
- Owner: thekvs
- License: other
- Created: 2011-04-11T10:38:15.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2016-06-20T09:38:16.000Z (over 8 years ago)
- Last Synced: 2024-08-04T01:15:39.298Z (4 months ago)
- Topics: erlang, snappy-compression-library
- Language: C++
- Homepage:
- Size: 2.59 MB
- Stars: 24
- Watchers: 3
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- beamtoolbox - [erl
README
## Description
The **esnappy** library provides Erlang bindings to Google's
[Snappy compression library](http://code.google.com/p/snappy/).
It uses separate OS thread for compression/decompression so it won't
screw up Erlang's VM scheduler while processing large data chunks.## Erlang Version
The **esnappy** library requires Erlang R14B or later.
## Building
[![Build Status](https://travis-ci.org/thekvs/esnappy.svg?branch=master)](https://travis-ci.org/thekvs/esnappy)
You have to have Snappy library installed on your system so that
compiler can link against it. You can also specify **ESNAPPY_INCLUDE_DIR**
and **ESNAPPY_LIB_DIR** enviroment variables for better control of
paths used to compile and link **esnappy** library.
$ ESNAPPY_INCLUDE_DIR=/usr/local/include ESNAPPY_LIB_DIR=/usr/local/lib ./rebar compile
$ ./rebar eunit## Perfomance
Erlang R14B02 (erts-5.8.3) [source] [64-bit] [smp:4:4] [rq:4] [async-threads:0] [hipe] [kernel-poll:false]Eshell V5.8.3 (abort with ^G)
1> code:add_path("ebin").
true
2> {ok, Data} = file:read_file("test/text.txt").
{ok,<<32,32,32,208,155,208,181,208,178,32,208,157,208,
184,208,186,208,190,208,187,208,176,208,181,208,
178,208,...>>}
3> {ok, Ctx} = esnappy:create_ctx().
{ok,<<>>}
4> {ST, {ok, SCompressed}} = timer:tc(esnappy, compress, [Ctx, Data]).
{46692,
{ok,<<217,192,187,1,84,32,32,32,208,155,208,181,208,178,
32,208,157,208,184,208,186,208,190,208,187,...>>}}
5> {ZT, ZCompressed} = timer:tc(zlib, zip, [Data]).
{493585,
<<172,189,203,110,37,219,145,37,56,207,175,56,17,147,146,
10,78,126,64,196,128,227,4,106,212,104,52,...>>}
6> size(Data).
3072089
7> size(SCompressed).
1548017
8> size(ZCompressed).
832898Note the difference in execution time **46692** (Snappy) vs. **493585** (zlib).