I'm not so sure. Functions calls are expensive, but are they expensive enough and is there enough data to sort to make the drop in readability worth the gain in speed?
Here's something you can use to benchmark.
our @unsorted; local *unsorted = $self->teams();
my @sorted;
# Allocate memory up front.
$#sorted = $#unsorted;
# Is it possible to do this faster?
for my $i (0..$#sorted) {
local *_ = \($unsorted[$i]);
$sorted[$i] = pack 'C6N',
255-($_->get_wins_total()), # Descending
255-($_->get_wins_division()), # Descending
255-($_->get_wins_home()), # Descending
255-($_->get_runs_scored()), # Descending
$_->get_runs_allowed(), # Ascending
$_->get_reg_schedule_id(), # Ascending
$i;
}
# In-place lexical sort.
@sorted = sort @sorted;
for my $i (0..$#sorted) {
$sorted[$i] = $unsorted[unpack('x6N', $sorted[$i])];
}
|