Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re^2: Print Number With Implied Decimal Point

by kennethk (Monsignor)
on Apr 18, 2012 at 15:08 UTC ( #965727=note: print w/ replies, xml ) Need Help??


in reply to Re: Print Number With Implied Decimal Point
in thread Print Number With Implied Decimal Point

If you want to make the regex solution run much more quickly, use Look Around Assertions in place of the capture and reinsert.

cmpthese(0, { substr => sub { my @l = @list; substr $_, -2, 0, '.' for @l; }, regex => sub { my @l = @list; s/(..)$/.$1/ for @l; }, regex2 => sub { my @l = @list; s/(?=..)$/./ for @l; }, });
yields
Rate substr regex regex2 substr 73.1/s -- -39% -71% regex 121/s 65% -- -52% regex2 250/s 242% 107% --

Update: As per JavaFan's comment, I had a typo in my sub. Replaced s/(?=..)$/./ with s/(?=..$)/./ which returns the correct result, but at substantially poorer performance.

#11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.


Comment on Re^2: Print Number With Implied Decimal Point
Select or Download Code
Re^3: Print Number With Implied Decimal Point
by JavaFan (Canon) on Apr 18, 2012 at 17:11 UTC
    These numbers look too good to be true:
    $_ = "9876543"; s/(?=..)$/./; say; __END__ 9876543
    You cannot actual replace a zero-width assertion.

    And before benchmarking, you should always check whether you're producing the correct results. Bogus solutions noone cares for, even if they're fast.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others romping around the Monastery: (8)
As of 2014-09-22 10:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

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











    Results (188 votes), past polls