[BusyBox 0004944]: patch to support lzop compression/decompression

bugs at busybox.net bugs at busybox.net
Sat Sep 20 14:54:01 UTC 2008

A NOTE has been added to this issue. 
Reported By:                Alain137
Assigned To:                BusyBox
Project:                    BusyBox
Issue ID:                   4944
Category:                   New Features
Reproducibility:            N/A
Severity:                   feature
Priority:                   normal
Status:                     assigned
Date Submitted:             09-13-2008 00:54 PDT
Last Modified:              09-20-2008 07:54 PDT
Summary:                    patch to support lzop compression/decompression
This is a patch to add the lzop compressor/decompressor to busybox.
Lzop is a compressor that is more than twice as fast as gzip at its
fastest setting, and is thus useful in any application where
compression/decompression speed is more important than ratio. For
instance, I use lzop with udcpast to speed up network transfers (gzip
would actually make the transfer slower, as any time gain obtained due to
having less data to transfer would be lost due to the time it takes to


> time lzop -c /usr/bin/mplayer >/dev/null
lzop -c /usr/bin/mplayer > /dev/null  0,33s user 0,01s system 100% cpu
0,337 total
> time gzip -1 -c /usr/bin/mplayer >/dev/null
gzip -1 -c /usr/bin/mplayer > /dev/null  0,80s user 0,03s system 94% cpu
0,882 total

> time gzip -dc  mplayer.gz >/dev/null
gzip -dc mplayer.gz > /dev/null  0,27s user 0,01s system 97% cpu 0,288
> time lzop -dc mplayer.lzo >/dev/null
lzop -dc mplayer.lzo > /dev/null  0,10s user 0,01s system 100% cpu 0,112

For building it, a liblzo2 static library must be present on the system
(for example, liblzo2-dev on a Kubuntu system)


 vda - 09-20-08 07:54  
The patch seems to contain only the glue needed to interface with LZO
library. It does not contain LZO compression code itself. The "innermost"
routines are lzo_compress() and lzo_decompress() but from there they just
call into liblzo2 (lzo1x_1_15_compress() etc).

And this glue code is big. I mean, it's VERY BIG.

For complarison: look into bbunzip.c, unlzma glue code is less than one

static char* make_new_name_unlzma(char *filename)
        return make_new_name_generic(filename, "lzma");
static USE_DESKTOP(long long) int unpack_unlzma(void)
        return unpack_lzma_stream(STDIN_FILENO, STDOUT_FILENO);
int unlzma_main(int argc UNUSED_PARAM, char **argv)
        getopt32(argv, "cf");
        argv += optind;
        /* lzmacat? */
        if (applet_name[4] == 'c')
                option_mask32 |= OPT_STDOUT;
        return bbunpack(argv, make_new_name_unlzma, unpack_unlzma);

lzop glue code should be just added to this file in a similar way. 

Issue History 
Date Modified   Username       Field                    Change               
09-13-08 00:54  Alain137       New Issue                                    
09-13-08 00:54  Alain137       Status                   new => assigned     
09-13-08 00:54  Alain137       Assigned To               => BusyBox         
09-13-08 00:54  Alain137       File Added: lzop.diff                        
09-20-08 07:54  vda            Note Added: 0011714                          

More information about the busybox-cvs mailing list