http://www.perlmonks.org?node_id=1078535


in reply to Re^3: Given When Syntax
in thread Given When Syntax

You're using a constant input which starts with a "3" though, which unfairly penalizes test1 and test2 (it's the final situation they check for). For inputs starting with a "1", test3 is still the fastest, but the difference between it and the other tests is much smaller.

Also, I'd recommend running your benchmarks like this:

cmpthese(-1, { test_1 => q{ test1("3.01.000") }, test_2 => q{ test2("3.01.000") }, test_3 => q{ test3("3.01.000") }, });

... using q{ ... } instead of sub { ... }. If you use sub { ... } you're wrapping each iteration in an extra sub call layer. For micro-optimization benchmarks like this, that extra layer can make a significant difference to the results.

use Moops; class Cow :rw { has name => (default => 'Ermintrude') }; say Cow->new->name