Hallo,
ich habe in einem Modul einen rekursiven Aufruf einer Funktion parseSub(), bei der ich ein Array durchreiche. Bei einem Array mit wenigen hundert Strings dauert das Dereferenzieren auf einem i7 ca. 300 ms und auf einem Raspi B2+ 5 Sekunden (siehe bitte mit "langsam" markierte Stelle im Kode unten).
Hat jemand eine Idee, wie ich das beschleunigen könnte?
Es ergibt übrigens keinen Unterschied, ob ich die Referenz oder das Array durchreiche.
Viele Grüße
Boris
sub parse($$) {
my ($self,@ical)= @_;
return $self->parseSub(0, \@ical);
}
sub parseSub($$$) {
my ($self,$ln,$icalref)= @_;
my @ical= @{$icalref}; # langsam!
...
$ln= $entry->parseSub($ln,$icalref);
...
}
hallo boris,
warum dereferenzierst du denn die ref und legst eine array kopie an?
du kannst doch direkt auf der referenz arbeiten. dann wird nichts kopiert.
gruss
andre
Danke, Andre. Ich habe das Offensichtliche übersehen. Geht.
Für die Nachwelt:
my $len= scalar @$icalref;
my $line= $$icalref[$ln];
Grüße
Boris