Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re: regex verses join/split

by clemburg (Curate)
on Jul 27, 2001 at 12:57 UTC ( [id://100249]=note: print w/replies, xml ) Need Help??


in reply to regex verses join/split

Looks like the split is slightly faster:

h:\>perl benchmark.pl perl benchmark.pl Benchmark: timing 100000 iterations of trimall_v1, trimall_v2... trimall_v1: 13 wallclock secs (13.29 usr + 0.00 sys = 13.29 CPU) trimall_v2: 12 wallclock secs (11.74 usr + 0.01 sys = 11.75 CPU)

Example code for testing with benchmark:

#!/usr/bin/perl -w use strict; use Benchmark; my $iterations = $ARGV[0] || 100000; timethese($iterations, { trimall_v1 => \&try_trimall_v1, trimall_v2 => \&try_trimall_v2, }); sub try_trimall_v1 { my ($val, $list) = setup(); 1 for (trimall_v1($val)); 1 for (trimall_v1(@{$list})); } sub try_trimall_v2 { my ($val, $list) = setup(); 1 for (trimall_v2($val)); 1 for (trimall_v2(@{$list})); } sub setup { my $val=" Scalar \r\r\n\t\t\n "; my @list=(" List\t\t\n 1 \n \n \n"," \t\t List 2 "," List\t\ +t\t\n 3\t\n\n\r "); return $val, \@list; } # Using regex sub trimall_v1 { # Trims all extra whitespace from left, right and middle! my @out=@_; # Pass by value! for (@out) { s/^\s+//; s/\s+$//; s/\s+/ /g; } return wantarray ? @out : $out[0]; } # Using specialized split on ' ' and $_ sub trimall_v2 { # Trims all extra whitespace from left, right and middle! my @out=@_; # Pass by value for (@out) { $_= join ' ',split; } return wantarray ? @out : $out[0]; }

Update: Argh ... too late ...

Christian Lemburg
Brainbench MVP for Perl
http://www.brainbench.com

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others musing on the Monastery: (3)
As of 2024-04-20 16:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found