Tüm boru hatları ile ilgili sorun, aslında işi iki katına çıkarmanızdır. Dekompresyon ne kadar hızlı olursa olsun, verinin yine de başka bir işleme geçirilmesi gerekir.
Perl, doğrudan sıkıştırılmış akışları okumanızı sağlayan PerlIO :: gzip'e sahiptir. Bu nedenle, dekompresyon hızı aşağıdakilerden farklı olsa bile bir avantaj sunabilir unpigz
:
#!/usr/bin/env perl
use strict;
use warnings;
use autouse Carp => 'croak';
use PerlIO::gzip;
@ARGV or croak "Need filename\n";
open my $in, '<:gzip', $ARGV[0]
or croak "Failed to open '$ARGV[0]': $!";
1 while <$in>;
print "$.\n";
close $in or croak "Failed to close '$ARGV[0]': $!";
16 GB RAM ile eski bir 2010 MacBook Pro ve zaten önbellekte dosya ile 8 GB RAM ile eski bir ThinkPad T400 13 MB gzip sıkıştırılmış dosya (1.4 GB'a kadar açılır) ile denedim . Mac'te Perl betiği, boru hatlarını kullanmaktan önemli ölçüde daha hızlıydı (22 saniyeye karşı 22 saniye), ancak ArchLinux'da unpigz'e kaybetti:
$ time -p ./gzlc.pl spy.gz
1154737
gerçek 4.49
4.47 kullanıcısı
sys 0.01
e karşı
$ time -p unpigz -c casus.gz | wc -l
1154737
gerçek 3.68
kullanıcı 4.10
sys 1.46
ve
$ time -p zcat Instagram Hesabındaki Resim ve Videoları spy.gz | wc -l
1154737
gerçek 6.41
6.08 kullanıcısı
sys 0.86
Açıkçası, unpigz -c file.gz | wc -l
burada hem hız açısından kazanan kazanıyor. Ve bu basit komut satırı, kısa olsa da, kesinlikle bir program yazmayı yener.