#!/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% --
|