in reply to How to access each char in a string most quickly?
Update:When dealing with an @thing variable in Perl, using shift is an extremely efficient way to get the "top of the list". The benchmarks below show that. I got a comment that indicated that somebody didn't believe that, well check it out for yourself. But again, this is not about reading characters, it must or seems to be Perl's power is about recognizing pattern matches!
#!/usr/bin/perl -w use strict; use Benchmark qw[ cmpthese timethese]; my $string='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaa'; my @chars=split //,$string; cmpthese ( 1000000, { 'Substr'=>sub { my $string='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaa'; for (my $i=0;$i<length $string; $i++) { my $char=substr $string,$i,1; } }, 'pre_splitted'=>sub { foreach my $char (@chars) {} }, 'Split'=>sub { my @string=split //,'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'; foreach my $char (@string) {} }, 'Shift'=>sub { my @string='aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaa'; shift @string;{} } } ); __END__ prints: Rate Split Substr pre_splitted Shift Split 8840/s -- -72% -94% -99% Substr 31465/s 256% -- -78% -95% pre_splitted 140667/s 1491% 347% -- -80% Shift 695410/s 7767% 2110% 394% --
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: How to access each char in a string most quickly?
by citromatik (Curate) on Jul 03, 2009 at 08:14 UTC | |
by Marshall (Canon) on Jul 03, 2009 at 08:24 UTC |