সমস্ত পাইপলাইনগুলির সাথে সমস্যা হ'ল আপনি মূলত কাজ দ্বিগুণ করছেন। ডিকম্প্রেশনটি কত তাড়াতাড়ি হোক না কেন, ডেটাটিকে অন্য প্রক্রিয়াতে বন্ধ করে দেওয়া দরকার।
পার্লের পার্লিও :: জিজিপ রয়েছে যা আপনাকে সরাসরি জিপিড স্ট্রিম পড়তে দেয়। অতএব, এটির সুবিধার প্রস্তাব দেওয়া যেতে পারে যদিও এর পচনশীলতার গতি এর সাথে মেলে না 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 জিবি র্যাম সহ একটি পুরানো 2010 ম্যাকবুক প্রো এবং 8 জিবি র্যাম সহ একটি পুরানো থিঙ্কপ্যাড টি 400 ইতিমধ্যে ক্যাশে থাকা ফাইলটির সহ । ম্যাক-তে, পার্ল স্ক্রিপ্টটি পাইপলাইনগুলি (5 সেকেন্ড বনাম 22 সেকেন্ড) ব্যবহারের চেয়ে উল্লেখযোগ্যভাবে দ্রুত ছিল, তবে আর্চলিনাক্সে এটি আনপিগের কাছে হেরেছে:
$ সময় -পি। / জিজিএলসি.পিএল স্পেস.gz
1154737
আসল 4.49
ব্যবহারকারী 4.47
sys 0.01
বনাম
$ সময় -p আনপিগ-সি স্পেস.gz | wc -l
1154737
আসল 3.68
ব্যবহারকারী 4.10
sys 1.46
এবং
$ সময় -p zcat spy.gz | wc -l
1154737
বাস্তব 6.41
ব্যবহারকারী 6.08
sys 0.86
স্পষ্টতই, unpigz -c file.gz | wc -l
গতির ক্ষেত্রে উভয়ই এখানে বিজয়ী। এবং, যে সহজ কমান্ড লাইন অবশ্যই একটি প্রোগ্রাম লিখতে বীট, যদিও সংক্ষিপ্ত।