in reply to Re (4): Simple Switch statement
in thread Simple Switch statement
The two subroutines are identical except for the string testing bit. The following are the test results:use Benchmark; @switch_me = qw / bob frnak 1 roger james /; timethese (1000000, { 'test_regex' => ' &test_regex; ', 'test_eq' => ' &test_eq; ' }); sub test_regex() { for(@switch_me) { /bob/ && do { break }; /frnak/ && do { break }; $_ == 1 && do { break }; } } sub test_eq() { for(@switch_me) { $_ eq "bob" && do { break }; $_ eq "frnak" && do { break }; $_ == 1 && do { break }; } }
It's about (118161.41-108307.16)/108307.16 = 10% speed increase in using eq than using regular expression. It's not a great increase, but it's nevertheless faster to use eq than regular expression.Benchmark: timing 1000000 iterations of test_eq, test_regex... test_eq: 8 wallclock secs ( 8.45 usr + 0.01 sys = 8.46 CPU) @ 118161.41/s (n=1000000) test_regex: 10 wallclock secs ( 9.22 usr + 0.01 sys = 9.23 CPU) @ 108307.16/s (n=1000000)
|
|---|