golombset を使ってみる

かなり自分用備忘録な記事です。

ソート済の整数列を圧縮する件
https://github.com/kazuho/golombset

↑ こちらをmacで使ってみたというだけです。Linux系でも同様に動くと思います。

$ git clone https://github.com/kazuho/golombset
$ cd golombset/
$ make

makeするだけでバイナリができます。さっそく使ってみます。

$ (echo 100; echo 155; echo 931) | ./golombset --encode | od -t x1
0000000    41  90  6d  c0  ff                                            
0000005

$ seq 1000 > 1000.txt
$ seq 1000 | ./golombset --encode > 1000.compressed.txt
$ ls -lh 1000*
-rw-r--r--  1 mk  staff   126B 12  9 12:12 1000.compressed.txt
-rw-r--r--  1 mk  staff   3.8K 12  9 12:12 1000.txt

いいですね〜。コマンド版は4096個の整数までのようなので、それ以上の数をコマンド版で扱いたいときは cmd.c の

>unsigned keys[4096];
>unsigned char buf[65536];

を書き換えればいいのかなと思います。自分のコードに取り込みたいときは golombset.h をincludeすれば簡単に使えるのでありがたいですね。

いつか整数列圧縮オプションをRedisのListに入れたい私にとってたいへん参考になるコードです。ありがとうございました。