But for those that are addicted to regexes, the above situation won't bite speed too hard. The regex engine optimizes a fixed string to a Boyer Moore match, which is a tad slower than string equality:
yieldsuse Benchmark qw(:all) ; my $value = 'FALSE'; my $count = 10_000_000; cmpthese($count, { 'regex' => sub { $value =~ /^true$/i }, 'eq' => sub { lc $value eq "true" }, });
Unless that match is inside a tight loop, program performance will not be too degraded,Benchmark: timing 10000000 iterations of eq, regex... 1048% perl boyer.pl Benchmark: timing 10000000 iterations of eq, regex... eq: 9 wallclock secs ( 8.98 usr + 0.00 sys = 8.98 CPU) @ 11 +13585.75/s (n=10000000) regex: 16 wallclock secs (16.31 usr + 0.00 sys = 16.31 CPU) @ 61 +3120.78/s (n=10000000) Rate regex eq regex 613121/s -- -45% eq 1113586/s 82% --
-Mark
In reply to Re: You don't always have to use regexes
by kvale
in thread You don't always have to use regexes
by petdance
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |