Antw: Re: Hash von Subroutine zurueckuebergeben

Johannes Fuernkranz juffi at ai.univie.ac.at
Tue Jan 25 07:24:46 CST 2000


Roland Bauer wrote:
> 
> Hier ist glaub ich %hash besser, weil lesbarer.

Das sowieso.

> Willst Du aber mehrere Hashes zurueckliefern, MUSST Du
> Referenzen nehmen:

Auch klar.

> > Weisz wer, was genau beim Return eines Array
> >passiert?
> 
> Es wird glaub ich eine liste von skalaren zurueckgegeben.
> wobei die skalare auch referenzen sein duerfen.
> oder die
> inhalte von listen (eigentlich auch skalare), oder die inhalte
> von hashes(eigentlich auch skalare).

Das wuerde heiszen, dasz ein 'return @array' fuer '@array == 1000' 100 mal
solange dauert wie fuer '@array == 10'?

Offenbar:

(make_array ist eine Funktion die 1000 mal rand()*rand()*rand()*rand()
berechnet, und die ersten $_[0] Werte in einem Array zurueckgibt, siehe attach):

timethis(1000,'@x = make_array(1000)');
timethis(1000,'@x = make_array(10)');
timethis(1000,'$xref = make_array(1000)');
timethis(1000,'$xref = make_array(10)');
timethis(1000,'@x = @{ make_array(1000) }');
timethis(1000,'@x = @{ make_array(10) }');

Output:

timethis 1000: 13 wallclock secs (13.68 usr +  0.00 sys = 13.68 CPU)
timethis 1000: 11 wallclock secs (10.41 usr +  0.00 sys = 10.41 CPU)
timethis 1000: 10 wallclock secs (10.33 usr +  0.00 sys = 10.33 CPU)
timethis 1000: 11 wallclock secs (10.34 usr +  0.00 sys = 10.34 CPU)
timethis 1000: 10 wallclock secs (10.29 usr +  0.00 sys = 10.29 CPU)
timethis 1000: 10 wallclock secs (10.35 usr +  0.00 sys = 10.35 CPU)


Man sehe:
Das Zurueckgeben einer 1000-elementigen Liste dauert tatsaechlich signifikant
laenger als das Zurueckgeben einer 10-elementigen Liste (30% Laufzeitsteigerung
nur durch Aendern des Returns! Das ist bei den 3000 Multiplikationen und 4000
generated random numbers, die auf jeden Fall ausgefuehrt werden, schon ganz
schoen viel!). 

Das Retournieren einer Referenz dauert immer gleich lang, auch wenn diese dann
in eine Liste verwandelt wird (das ist eigentlich nicht weiter ueberraschend).

Wieder was gelernt (sorry, falls Euch das eh schon klar war).

						Juffi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: bench.pl
Type: application/x-perl
Size: 735 bytes
Desc: not available
Url : http://mail.pm.org/archives/vienna-pm/attachments/20000125/a1ad8225/bench.bin


More information about the Vienna-pm mailing list