in reply to Re^3: Can you write a faster code to perform this task?
in thread Can you write a faster code to perform this task?

Well TIMTOWTDI with two chained tr is not necessarily fast. :)

But who knows, try to benchmark... :)

Cheers Rolf

(addicted to the Perl Programming Language and ☆☆☆☆ :)

  • Comment on Re^4: Can you write a faster code to perform this task?

Replies are listed 'Best First'.
Re^5: Can you write a faster code to perform this task?
by Your Mother (Archbishop) on Sep 29, 2014 at 16:02 UTC

    tr is MUCH faster than s though. I tried to work this out but didn’t hit on trizen’s cleverness. So…

    # (v5.18.2) built for darwin-2level 'tr' => sub { $str =~ tr/M/~/sr=~tr/~//; }, -- count 3 regex 3 regex2 3 split 3 tr 3 Rate regex2 split regex count tr regex2 169354/s -- -62% -65% -75% -94% split 446500/s 164% -- -7% -34% -85% regex 481882/s 185% 8% -- -29% -84% count 674634/s 298% 51% 40% -- -78% tr 3044813/s 1698% 582% 532% 351% --

    Update: as trizen noted in his code, the /r flag to tr came in at 5.14. It won’t work on older Perls (update: <- stupid apostrophe begone).

      > I tried to work this out but didn’t hit on trizen’s cleverness.

      me too / neither =)

      (tried /s but the returned count wasn't for groups)

      > the /r flag to tr came in at 5.14. It won’t work on older Perls

      If it's that fast using $str twice shouldn't be a big problem.

      Should be mentioned that tr is destructive, i.e. a safety copy of the string may be needed too.

      Cheers Rolf

      (addicted to the Perl Programming Language and ☆☆☆☆ :)