Andres Freund: Geschwindigkeit von strict/warnings

Beitrag lesen

Halihallo Phillip ;-)

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.

Kannst du dieses noch erklären, würde mich interessieren.

s.o.

Naja gut, ich versuche mal das Verstandene niederschreiben:
setzen wir _kein_ use strict und verhalten uns auch so (sprich: nirgendwo ein my...),
dann werden alle Variablen im global-scope (Modul-Scope [meistens also package main])
gespeichert. Theoretisch wäre es dann möglich, alle Variablennamen auszufiltern und
gleich zu Beginn zu allocieren; dann müsste Perl im ganzen Programm nur einen alloc
ausführen und hätte den gesamten Speicher reserviert. Das wäre zwar von Seiten der
Performance sehr gut, aber von Seiten der Speicherverwaltung absoluter Schwachsinn;
demnach glaube ich nicht, dass dies so umgesetzt wurde. Es wäre dann ja oftmals so, dass
Speicher für einige Variablen allokiert wurde, welche gar nie gebraucht werden...

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*.
Ausserdem sehe ich da ein Problem mit anonymen Subs/arrays...

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.

PS: Darf ich eigentlich allokiert sagen? - Oder besser allociert? - OK, etwas denglish... Oder gibt's das überhaupt nicht? - Wenn letzteres, dann folgendes: im C wird der Befehl zum Speicher holen mit 'alloc' beschrieben... Soviel zur Erklärung warum ich auf dieses "allo(c|k|ck)ieren" kam.

Dieses Problem kenne ich, einerseits sind wir hier in Deutschland wo Deutsch geredet wird und wir auch reden sollten wenn wir verstanden werden wollen, andererseits ist IMHO im IT Bereich nun mal englich die Standartsprache sclechthin. Was ja auch irgendwie sinvoll ist.
Diese Entscheidung beinflusst dann auch die Benennung von Variablen usw..

mfg Andres Freund