$balance_due = abs($balance_due);
####
#!/usr/bin/perl
use strict;
use warnings;
use Benchmark qw(cmpthese);
my $data = -12345;
my $count = pop || 500000;
cmpthese($count, {
negate => sub { my $i = -$data },
absolute => sub { my $i = abs($data) },
regex => sub { my ($i) = $data =~ s/-// },
});
####
Benchmark: timing 500000 iterations of absolute, negate, regex...
absolute: 1 wallclock secs ( 1.24 usr + 0.00 sys = 1.24 CPU) @ 404858.30/s (n=500000)
negate: 1 wallclock secs ( 1.15 usr + 0.00 sys = 1.15 CPU) @ 433275.56/s (n=500000)
regex: 3 wallclock secs ( 3.16 usr + 0.00 sys = 3.16 CPU) @ 158328.06/s (n=500000)
Rate regex absolute negate
regex 158328/s -- -61% -63%
absolute 404858/s 156% -- -7%
negate 433276/s 174% 7% --