#!perl -n # llil2cmd.pl. Abbreviated version of llil2grt.pl. chomp; ($w,$c) = split/\t/; $h{$w} += $c; END { $\=$/; push @l, pack('NA*',-$v,"$k\t$v") while ($k,$v)=each %h; print substr($_,4) for sort @l; } #### > time perl llil2grt.pl big1.txt big2.txt big3.txt >grt1.tmp llil2grt start get_properties : 8 secs sort + output : 22 secs total : 30 secs real 0m33.475s user 0m32.180s sys 0m1.295s #### > time perl llil2cmd.pl big1.txt big2.txt big3.txt >cmd1.tmp real 0m28.937s user 0m27.843s sys 0m1.093s > diff cmd1.tmp grt1.tmp #### #!perl -n # llil2cmd-long.pl. A long short version of llil2grt.pl. BEGIN { $tstart1 = time; } chomp; ($w,$c) = split/\t/; $h{$w} += $c; END { my $tstart2 = time; $\=$/; push @l, pack('NA*',-$v,"$k\t$v") while ($k,$v)=each %h; print substr($_,4) for sort @l; my $tend2 = time; my $taken1 = $tstart2 - $tstart1; my $taken2 = $tend2 - $tstart2; my $taken = $tend2 - $tstart1; warn "get_properties : $taken1 secs\n"; warn "sort + output : $taken2 secs\n"; warn "total : $taken secs\n"; } #### $ time perl llil2cmd-long.pl big1.txt big2.txt big3.txt >long1.tmp get_properties : 7 secs sort + output : 21 secs total : 28 secs real 0m28.629s user 0m27.707s sys 0m0.917s > diff long1.tmp grt1.tmp #### wget https://www.cpan.org/src/5.0/perl-5.36.0.tar.gz (update: run sha256sum perl-5.36.0.tar.gz and check matches https://www.cpan.org/src/5.0/perl-5.36.0.tar.gz.sha256.txt) tar -xzf perl-5.36.0.tar.gz cd perl-5.36.0 ./Configure -des -Dprefix=$HOME/localperl make 2>&1 | tee make.tmp make test 2>&1 | tee test.tmp make install 2>&1 | tee install.tmp #### use 5.036; use experimental qw/for_list declared_refs/; #### while (my ($k, $v) = each %{$href}) { push @lines, pack('NA*', -$v, "$k\t$v") } #### for my ($k, $v) (%{$href}) { push @lines, pack('NA*', -$v, "$k\t$v") } #### $ cd $HOME/localperlmodules $ type perl perl is hashed ($HOME/localperl/bin/perl) $ wget https://www.cpan.org/modules/by-module/Roman/Roman-1.24.tar.gz $ tar -xzf Roman-1.24.tar.gz $ cd Roman-1.24 $ perl Makefile.PL 2>&1 | tee make.tmp $ make 2>&1 | tee make.tmp $ make test 2>&1 | tee test.tmp $ make install 2>&1 | tee install.tmp