#!/usr/bin/perl use strict; use warnings; use Benchmark qw(cmpthese); my @a = map { (rand() * 1000) / 1000 } 1 .. 1000; cmpthese(-1, { 'GF' => sub {GF($_) for @a}, 'GF2' => sub {GF2($_) for @a}, 'dex' => sub {dex($_) for @a}, 'ccn' => sub {ccn($_) for @a}}); sub GF { my $number = abs($_[0] * 100); return $number - int ($number) > 0; } sub GF2 { my $number = $_[0] * 100; return $number - int ($number) > 0; } sub ccn { $_[0] =~ /\..../; } sub dex { my $number = $_[0]; return (($number*100) - int($number*100) > 0); } __END__ Rate dex GF GF2 ccn dex 931/s -- -7% -19% -28% GF 1000/s 7% -- -13% -23% GF2 1152/s 24% 15% -- -11% ccn 1297/s 39% 30% 13% --