Washupda: Variablen "leeren"

Salve,
ist es sinnvoll (entsprechend große) Variablen zu "leeren" ($var="";)die man nicht mehr braucht?
Tschau
Washupda

  1. Hi,

    ist es sinnvoll (entsprechend große)

    was ist "entsprechend groß"? Vermutlich ist es bereits sinnvoll, sie überhaupt nicht erst in den Speicher zu bringen...

    Variablen zu "leeren"

    Ja.

    ($var="";)

    Nein.

    undef $var;

    Oder wenigstens

    $var = ''; # Singlequotes ;-)

    die man nicht mehr braucht?

    Daraus brauchst Du dann aber keine Lebensaufgabe zu machen :-)

    Cheatah

    1. Hi,

      was ist "entsprechend groß"? Vermutlich ist es bereits sinnvoll, sie überhaupt nicht erst in den Speicher zu bringen...

      sondern?

      Oder wenigstens

      $var = ''; # Singlequotes ;-)

      Ist das denn so ein Unterschied? :-)

      Daraus brauchst Du dann aber keine Lebensaufgabe zu machen :-)

      Okay.
      Tschau
      Washupda

      1. Hi,

        was ist "entsprechend groß"? Vermutlich ist es bereits sinnvoll, sie überhaupt nicht erst in den Speicher zu bringen...
        sondern?

        oft ist es möglich, nur einen sehr geringen Teil der Daten im Speicher zu halten. Beispielsweise kann man häufig eine Datei zeilenweise einlesen, anstatt sie komplett in ein Array zu hauen. Ob das bei Dir klappt, kannst natürlich nur Du entscheiden.

        $var = ''; # Singlequotes ;-)
        Ist das denn so ein Unterschied? :-)

        Nicht im Einzelfall. Bei Doublequotes wird aber immer noch geguckt, ob der Inhalt expandiert werden kann - also z.B. Variablenersetzung. Wenn man sowas nicht braucht, braucht man auch keine Doublequotes.

        Der Unterschied ist bei einer einzigen Zuweisung marginal, sogar nicht meßbar. In einer umfangreicheren Schleife merkt man es dann aber plötzlich doch. Die Menge macht's.

        Und denk auch dran, daß man nie weiß, wo man den eigenen Code auf einmal wiederverwendet... :-)

        Cheatah

  2. Hallo,

    ist es sinnvoll (entsprechend große) Variablen zu "leeren" ($var="";)die man nicht mehr braucht?

    Vielleicht hilft Dir die perlfaq3 Absatz
    "How can I make my Perl program take less memory?"
    bzw.
    "How can I free an array or hash so my program shrinks?"
    weiter.

    Sollten Variablen temporär genutz werden, hilft eventuell ein Block in Verbindung mit my().
    [... some code above]
    {
    my($large_buffer);
    $large_buffer = &fill_buffer_with_omething_strange;
    so_something_with($large_buffer);
    }

    und furt is die Variable;-)
    Wobei IMHO der Speicher zwar nicht freigegeben wird, aber für eine weitere Verwendung wieder zur Verfügung steht. Das heißt neue Variablen verwenden wieder den freigewordenen Speicher.

    Grüße
      Klaus