Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Re^2: Print Number With Implied Decimal Point

by kennethk (Abbot)
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; }, });
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
Replies are listed 'Best First'.
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?

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

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (8)
As of 2016-05-31 17:51 GMT
Find Nodes?
    Voting Booth?