Halihallo Andres
Ich hoffe, dass ich diesen Absatz richtig verstanden habe... Z. B. das
Wort 'autvivikaiert' höre ich zum ersten Mal und google anscheinend auch... :-(
Hab mich auch verschrieben, der Begriff heißt Autovivifikation (sich selbst zu leben erwecken), und demnach autovivifikaisiert ;-), oder?. Man sollte halt ausreichend schlafen *g*.
:-)
Dies bedeuted dass für Variablen, von sich selbst aus, in der Laufzeit Speicher reservieren. Falls es dich interressiert, und du "programmieren in Perl" (hinten im Index nachschauen, besonders Seite 1009) nicht hast, aus dem ich die Informationen habe, kann ich den Abschnitt mal schnell abtippen, aber jetzt muss ich noch schnell meine Hausaufgaben fertig machen.
Das Buch habe ich nicht. Aber google hat seine Dokumente zu "Autovivification" (das
Deutsche Kompliment wird nicht gefunden). Ich konnte mich da etwas einlesen, danke.
Es wäre praktisch wenn man dieses Verhalten irgendwie erzwingen könnte. Dann könnte man in dem Fall, dass man sehr hohe Geschwindigkeit braucht, den Perl Interpreter/Compiler mit einem Switch anweisen allen Speicher auf einmal zu rservieren. Das Problem das ich sehe ist allerding, dass Perl kaum wissen kann wieviel Speicher für jede einzelne Variable benötigt wird. Ich denke mal es macht schon einen Unterschied ob ich eine 100 MB Datei einlese, oder ob es sich um eine Konfigurationsvariable handelt *fg*.
Völlig richtig. Zumindest könnte jedoch Speicher für den SV struct allokiert werden.
Zur Info: Der SV struct ist eine Datenstruktur, womit Perl auf C-Ebene skalare Werte
abbildet (SV: Scalar Value); dieser braucht auch schon einige Bytes und wenn da
auch nur 100 Variablen sind, würde es bereits etwas bringen, da eben nur einmal, sagen
wir 100*12 Bytes = 1200 Bytes allokiert werden müssten und nicht 100 mal 12 Bytes
(die Anzahl ist das Performancefressende, nicht die Grösse des allokierten Bereichs).
Ausserdem sehe ich da ein Problem mit anonymen Subs/arrays...
Ja, diese müssen notgedrungen on the fly angelegt werden.
Habe ich das so richtig verstanden?
Ja, so habe ich das so ungefähr gemeint (ich kann es nicht besser ausdrücken). Ich denke dass du es auch so verstanden hast, aber noch einmal zur verdeutlichung wie ich es meinte: Ohne my muss das Programm selber erkennen, ob eine Variable jetzt Speicher braucht, oder nicht. Demnach wird für diese Autoerkennung CPU-Zeit benötigt. Mit use strict 'vars', um das es sich meiner Meinung nach hier alleine handelt, wird dieses Reservieren jetzt durch einen eindeutigen Bezeichner(my) eingeführt. Die Frage ist jetzt nur, ob Perl das überhaupt berücksichtigt.
Stimmt, das konnte ich nach wie vor nicht beweisen.
Viele Grüsse
Philipp