sub and_test    { $_[0] & 1      } sub and_test2   { abs($_[0]) & 1 } sub modulo_test { $_[0] % 2      } cmpthese(    20000000,    {        and_test    => sub { &and_test( $n ) },        modulo_test => sub { &modulo_test( $n ) },        and_test2   => sub { &and_test2( $n ) }    } );                 Rate modulo_test   and_test2    and_test modulo_test 1242236/s          --         -9%        -20% and_test2   1364256/s         10%          --        -12% and_test    1546790/s         25%         13%          --