高速な圧縮・解凍アルゴリズムsnappy

最近、シリアライズ・デシリアライズについて調べています。
MessagePack、Kryo、Protocol Buffersなどのシリアライザーのパフォーマンス比較
それと同時に、圧縮・解凍のアルゴリズムについても調べています。

ネットワークごしに大きなデータを取得するには?

ネットワークごとに大きなデータを取り出そうと考えています。この時、ネットワーク遅延が大きい場合、圧縮してから転送する方法が有効です。
ブラウザでWEBサイトを見る場合にも圧縮して転送する手法は良く用いられていて、この場合gzipに圧縮して転送することが多いと思います。
今回は、バックエンドサーバでデータのやりとりをするのに、圧縮転送をしたいと考えており、シリアライズ・デシリアライズの手法と共に、圧縮・解凍のアルゴリズムについても調べました。

高速な圧縮・解凍アルゴリズムsnappy

調べましたと書きましたが、本当は調べてもらいました。
調べてもらったところ、圧縮率は小さいものの、圧縮・解凍の時間が極めて短いsnappyという圧縮形式があるそうです。
スクリーンショット 2013-11-25 20.03.28
snappy – A fast compressor/decompressor
初めて知りましたが、カメラアプリSnapeeeとは無関係なようです。

インストールしてみる

早速インストールしてみます。

mkdir snappy
cd snappy
curl -O http://snappy.googlecode.com/files/snappy-1.1.1.tar.gz
tar xzvf snappy-1.1.1.tar.gz
cd snappy-1.1.1
./configure
make
sudo make install

・・・と、インストールしようとしたんですが、Homebrewからコマンド一発で入りました。

$ brew install snappy
==> Downloading https://snappy.googlecode.com/files/snappy-1.1.1.tar.gz
######################################################################## 100.0%
==> ./configure --prefix=/usr/local/Cellar/snappy/1.1.1
==> make install

コマンドラインで圧縮・解凍できるのかなと思っていましたが、ライブラリ形式での提供のみのようです。

つづく

というわけで、コマンドラインから使えなかったので、Javaインタフェースから使ってみたのですが、長くなるので続きます。
つづき→「高速圧縮アルゴリズムsnappyのgzipとの比較

コメント

  1. […] 高速な圧縮・解凍アルゴリズムsnappy […]

タイトルとURLをコピーしました