Hello again Steve

Am Dienstag, 8. März 2005 15.46 schrieb John Doe:
> Hello Steven
[...]
> > s/// operates by default on $_, as many other built-in functions do,
> > thus:
> >
> > @parts = map { do { s/\s*$//; $_ } @parts;
>
> Thanks :-)
> [just a very little typo note: one right '}' is missing]
>
> What do you think if one would also put an o modifier here?
>
>  @parts = map { do { s/\s*$//o; $_ } } @parts;
>
> Would this still be (much) slower than the tr/// version?
> [hmm... ok... I could test it myself]
>
> > Also, consider using the tr operator instead of s/// for speed-up
> > purposes.
>
> Oups - I missed this possibility... which would be (just to be complete :-)
>
>  @parts = map { do { tr/ //d; $_ }} @parts; # d modifier required
[...]

I just realized that the tr is not applicable in the case of the present data 
because column 4 which contains spaces _within_ the value
(e.g. "VAL B").


Then I ran the following test with (for me) not very expected results - maybe 
the test is bad designed?

# I ran 3 times:

use strict; 
use warnings;
use Benchmark 'cmpthese';

my $line='ATOM   2909  CG1   VAL B'; # incomplete demo line!

my @parts= $line=~/^(.{7}).{6}(.{6}).{5}/o;  

cmpthese( -1, { 
 common => 'my @[EMAIL PROTECTED];', 
 s  => 'my @[EMAIL PROTECTED]; @p=map {do{s/\s*$//; $_}} @p;', 
 so => 'my @[EMAIL PROTECTED]; @p=map {do{s/\s*$//o; $_}} @p;', 
 tr  => 'my @[EMAIL PROTECTED]; @p=map {do{tr/ //d;  $_}} @p;' 
} ) ;

# With the results:

            Rate     tr      s     so common
tr      607350/s     --    -1%    -2%   -47%
s       613304/s     1%     --    -1%   -46%
so      619376/s     2%     1%     --   -46%
common 1137401/s    87%    85%    84%     --

            Rate      s     tr     so common
s       607350/s     --    -0%    -1%   -45%
tr      607350/s     0%     --    -1%   -45%
so      613304/s     1%     1%     --   -45%
common 1113476/s    83%    83%    82%     --


            Rate     tr     so      s common
tr      595781/s     --    -4%    -5%   -44%
so      619376/s     4%     --    -1%   -42%
s       626447/s     5%     1%     --   -42%
common 1071850/s    80%    73%    71%     --

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to