Thread Allg. Frage zu Referenzen (18 answers)
Opened by toppsino at 2008-04-12 17:15

sid burn
 2008-04-12 19:45
#108279 #108279
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Blöde 10K Zeichen Begrenzung.....




Hier ist also eine Subroutine die einen Hash intern von deinen benutzereingaben erzeugt. Eine Referenz darauf zurück gibt und diesen in einem Array Speichert. Da %person immer noch referenziert wird, wird der Hash nach beenden Subroutine nicht zerstört.

Was wichtig zu verstehen ist. Nach beenden der Subroutine verliert aber %person innerhlab der Subroutine seine gültigkeit. Aber es gibt ja ausserhalb der Subroutine ja immer noch eine Referenz die auf den Hash zeigt. Somit existiert dieser noch weiter.

Bei einem erneuerten Aufruf der Funktion musst du aber verstehen das dann wieder ein komplett neuer Hash erzeugt wird.

Ein weiterer Vorteil den ich noch nicht genannt habe. Wenn du eine Referenz einer Subroutine übergibst dann wird der eigentliche Inhalt nicht Kopiert. Das ist performanter. Stell dir vor du hast wirklich eien sehr große Datenstruktur wo 500MB Daten gespeichert sind (nur rein theoretisch). Wenn du es mittels Kopie übergeben würdest. Müssten nochmals 500MB Speicher addressiert werden. Also insgesamt 1GB Speicher.

Wenn du eine Referenz übergibst dann wird nur eine Speicheradresse übergeben wo sich diese 500MB befinden. Aber nicht die ganzen 500MB nochmals Kopiert.

Schneller, Speicherschonender.


Ich hoffe diese kleine Beispiele haben dir so ungefähr den Sinn dahinter gezeigt. Ansonsten würde ich dir raten einfach wieter zu Programmieren. Irgendwann macht es "Plopp!". ;)
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de

View full thread Allg. Frage zu Referenzen