Раньше я определял запись своих элементов как просто массив в Heap::Simple
, потому что мне не требовалась вторичная сортировка.
После реализации вторичной сортировки и функции определения элементов для вставки ссылок на массивы в созданную мной кучу время выполнения моих вставок увеличилось (много!).Это описано в документации для Heap::Simple
в Any
Однако мне сложно понять недостатки использования типа элемента Any
.Буду ли я создавать дополнительные ссылки на массив?Должен ли я использовать key_insert
, чтобы уменьшить время выполнения?
Вот код в том виде, в каком он есть на данный момент:
my $heap = Heap::Simple->new( order => \&by_num_or_str,
elements => [Function => \&first_two_slots]
);
sub by_num_or_str
{
my ( $a, $b ) = @_;
my $result =
$b->[0] <=> $a->[0] #0-th element is a number
||
$a->[1] cmp $b->[1]; #1-st element is a string
return $result == -1;
}
sub first_two_slots
{
my $array_ref = shift;
return [ @$array_ref[0,1] ];
}
Контекст: Вставка ссылок на массив в Perl Heap