lbzip2
Már korábban írtam a pbzip2-ről, ami egy párhuzamos bzip2 implementáció, és említettem, hogy az egyik hátránya az, hogy a hagyományos bzip2 programmal készült tömörített fájlok kitömörítésekor sajnos pbzip2 is csak egy magot használ.
Már abban a cikkben is említettem lbzip2-t, most elvégeztem néhány tesztet egy nyolcmagos gépen:
Gyártottam egy tömörített fájlt a hagyományos bzip2 programmal:
$ dd if=/dev/urandom of=/tmp/teszt1000MB bs=1024 count=1000K
1024000+0 records in
1024000+0 records out
1048576000 bytes (1.0 GB) copied, 91.707 s, 11.4 MB/s
$ time bzip2 -c teszt1000MB > teszt1000MB.bz
real 2m16.594s
user 2m15.187s
sys 0m0.802s
Ezután kitömörítettem bzip2, pbzip2, lbzip2 programokkal ugyanazt a fájl, és mértem a futási időt:
$ time bunzip2 -c teszt1000MB.bz > /dev/null
real 1m8.097s
user 1m7.887s
sys 0m0.264s
$ time pbunzip2 -c teszt1000MB.bz > /dev/null
real 1m9.206s
user 1m9.689s
sys 0m0.300s
$ time lbunzip2 -c teszt1000MB.bz > /dev/null
real 0m16.764s
user 2m9.889s
sys 0m1.724s
Látszik a számokból (real és user összehasonlításából), hogy bzip2 és pbzip2 egyetlen magot használ, miközben lbzip2 szépen használja az összes magot ilyen esetben is. Vagyis lbzip2 ilyen esetekben sokkal gyorsan pbzip2-nél.