Help for this page

Select Code to Download


  1. or download this
    #!/usr/bin/perl
    use Benchmark qw(cmpthese);
    ...
    unpack   1.42     1%     --    -2%   -81%
    substr   1.40     3%     2%     --   -80%
    vec2    0.275   423%   417%   408%     --
    
  2. or download this
    qwurx [shmem] ~> wc -c interleave.pl
    715
    ...
    
    unpack: 1193
    #!/usr/bin/perl#my$buf=chr(1)x2e6;my$buf=do{local$/;seekDATA,0,0;<DATA
    +>};my$c={unpack=>sub{join(chr(0),unpack'(A1)*',$buf).chr(0)},substr=>
    +sub{my$out=chr(0)x(length($buf)*2);substr($out,$_*2,1,substr($buf,$_,
    +1))for0..length($buf);$out;},vec=>sub{my$out=chr(0)x(length($buf)*2);
    +vec($out,$_<<1,8)=vec($buf,$_,8)for0..length($buf)-1;$out;},vec2=>sub
    +{my$out=pack'v*',unpack'C*',$buf;}};for(keys%$c){my$out=$c->{$_}->();
    +(my$c=$out)=~s/\0//g;print"$_:",length($out),$/,$c,$/;}__DATA__