Thread Frage zur richtigen Speicherverwendung
(14 answers)
Opened by bianca at 2010-01-24 14:32
Bin gerade etwas unsicher, ob ich die richige Syntax verwende.
Ich möchte, dass mein Hash %hash nur EINMAL im Speicher gehalten wird und auch nicht temporär oder anderweitig intern vervielfältigt wird. Außerdem soll es so performant wie möglich sein, weil es zig mal durchlaufen werden muss. Ist folgender Code dazu korrekt? Wenn ich nach meinem Windows Task-Manager gehe ist der Code Scheiße, weil die CPU auf 100 % hoch geht und das ganze Teil mit sub ca. 5 Sekunden läuft. Speicher braucht ca. 3 MB, was sich nicht wesentlich erhöt nach dem sleep. Wie kann ich das optimieren? Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #!/usr/bin/perl -w use strict; use warnings; use diagnostics; my $anzahl = 1000; my %hash; for (1..$anzahl) { $hash{'foo' . $_} = 'test'; } print "Pause, fertig definiert\n"; sleep 5; print "Laeuft weiter\n"; my $start = time (); for my $nr (1..$anzahl) { # $hash{'foo' . $nr} = "test$nr"; # Variante direkt %hash = &test (\%hash,$nr); # Variante mit sub } print "Laufzeit: " . (time () - $start) . " Sekunden\n"; sub test { my %hash = %{$_[0]}; my $nr = $_[1]; $hash{'foo' . $nr} = "test$nr"; return %hash; } 10 print "Hallo"
20 goto 10 |