SBZIP is an efficient compression software originally developed for wireless sensor networks. SBZIP makes it easy to compress sensor data, program code, configuration data, web objects, and more. It was written in the end of 2006 as part of a Master's project at SICS by Nicolas Tsiftes.
The foundation of SBZIP is the combination of four algorithms. At first, SBZIP encodes run-lengths of input data. Thereafter it does a Burrows-Wheeler Transform on the data, followed by Move-To-Front coding. The final step is to encode the data with Huffman coding using a constant statistical model. Decompression involves applying the inverse of each algorithm in reverse order.
SBZIP operates on blocks of arbitrary sizes, which requires that the application programmer maintains the block boundaries when compressing and decompressing. When using rather small blocks (64-256 bytes), SBZIP achieves efficient compression while using little enough RAM to fit in sensor motes with 5kb of RAM. See Figure 1 for a small comparison of the compression factors of different algorithms. SBZIP reduces the size of the software modules to 49.3%.
Tsiftes, Nicolas and Dunkels, Adam and Voigt, Thiemo. Efficient sensor network reprogramming through compression of executable modules. In: Fifth Annual IEEE Communications Society Conference on Sensor, Mesh and Ad Hoc Communications and Networks -- SECON 2008, 16-20 June 2008, San Francisco, California, USA. [PDF]
Example code: example.c