Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: Removing Trailing Whitespace: Multiple ways.

by perlmonkey (Hermit)
on May 12, 2001 at 02:53 UTC ( #79862=note: print w/ replies, xml ) Need Help??


in reply to Removing Trailing Whitespace: Multiple ways.

If it is speed you are after, you can always put on your C hat:

use Benchmark; use Inline C; timethese (1000000, { 'regex' => q{ my $foo = "test "; $foo =~ s/\s+$//; }, 'inline' => q{ my $foo = "test "; rmsp($foo); } }); __END__ __C__ void rmsp(char * str) { int i = strlen(str) - 1; while( i >= 0 && str[i] == ' ' ) { str[i--] = '\0'; } }


Results:
Benchmark: timing 1000000 iterations of inline, regex... inline: 4 wallclock secs ( 4.39 usr + 0.03 sys = 4.42 CPU) regex: 8 wallclock secs ( 6.84 usr + 0.03 sys = 6.87 CPU)


Comment on Re: Removing Trailing Whitespace: Multiple ways.
Select or Download Code
Re: Re: Removing Trailing Whitespace: Multiple ways.
by no_slogan (Deacon) on May 12, 2001 at 03:15 UTC
    That would be really cool, but rmsp() leaves the string null-padded instead of removing the extra blanks.
      Yah, so I was lazy and I cheated a bit. $foo will look good when you print it though. What can I say, there are reasons I am a perl programmer.

      But to be all official like and actually update the scalar value to be a proper string of length 4 you can use this code for rmsp:
      void rmsp(SV * sv) { char * end; int length; if( !SvPOK(sv) ) return; end = SvEND(sv); length = SvCUR(sv); end--; /* skip \0 */ while( *end == ' ' && length >=0 ) { end--; length--; } if( length >= 0 ) SvCUR_set(sv, length); }
      And the new results I got are:
      Benchmark: timing 1000000 iterations of inline, regex... inline: 6 wallclock secs ( 4.19 usr + 0.01 sys = 4.20 CPU) regex: 9 wallclock secs ( 7.71 usr + 0.02 sys = 7.73 CPU)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://79862]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others pondering the Monastery: (3)
As of 2014-09-17 01:12 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (55 votes), past polls