Vorteile- Nachteile von Lokale variable!! hilfe...
-
Naaaaaaajaaaaaaa, entweder es sind kleine Variablen, dann ist es egal, oder es sind große, dann sind die aber auf dem Stack noch schlechter aufgehoben, IMHO.
-
Optimizer schrieb:
Naaaaaaajaaaaaaa, entweder es sind kleine Variablen, dann ist es egal, oder es sind große, dann sind die aber auf dem Stack noch schlechter aufgehoben, IMHO.
1. Warum ist es bei kleinen Variablen egal?
2. Was hat lokal direkt mit "Stack" zu tun?
3. Warum sind große Variablen auf dem Stack schlechter als auf dem Heap aufgehoben?
-
Optimizer schrieb:
Naaaaaaajaaaaaaa, entweder es sind kleine Variablen, dann ist es egal, oder es sind große, dann sind die aber auf dem Stack noch schlechter aufgehoben, IMHO.
darf ich jetzt lachen?
wieviele variablen hast du denn? und wenn es nur 20 waeren, waere es immernoch verschwendung.und seit wann liegen alle lokalen variablen am stack?
-
Shade Of Mine schrieb:
wieviele variablen hast du denn? und wenn es nur 20 waeren, waere es immernoch verschwendung.
Stimmt.
Shade Of Mine schrieb:
und seit wann liegen alle lokalen variablen am stack?
Welche lokale Variable liegt denn dann nicht auf dem Stack?
Ich nehme an, du meintest sowas hier:
{ MyObjekt *x = new MyObject(); }
Hier ist die Variable x lokal, ein Pointer und wird auf dem Stack liegen, x ist nach dem verlassen des Blockes nicht mehr gültig (Speicher wird freigegeben).
Das erzeugte Objekt ist weder eine Variable, noch ist es lokal, da es im Heap liegt und auch nach verlassen des Blockes gültig ist.
Kann aber auch sein, dass du was anderes meintest, dann würde mich aber interessieren, was das denn nun ist. Mir fallen spontan keine lokalen Variablen ein, die nicht auf dem Stack gespeichert werden.Achja, was mich noch interessieren würde ... ich habe noch nie was von kleinen und großen Variablen gehört, darf man fragen, was ihr damit meint
-
wahrscheinlich "normale" variablen und arrays... letztere können manchmal ganz schön groß sein
sollte man lieber nicht lokal machen sondern wenigstens auf dem heap...
-
khine schrieb:
Wozu dienen Lokale Variable und welche Vor-Nachteile gibst es gegenüber globen viriablen. ???
sie machen das programm viel schneller.
-
wieso das?? weil der compiler dann bei optimierungen besser weiß, für welche variablen er register einsetzen kann?? ansonsten ist beides im normalen ram und ob nun auf den stack oder auf das datensegment zugegriffen wird, macht in meinen augen keinen unterschied...
-
todo schrieb:
wieso das?? weil der compiler dann bei optimierungen besser weiß, für welche variablen er register einsetzen kann?? ansonsten ist beides im normalen ram und ob nun auf den stack oder auf das datensegment zugegriffen wird, macht in meinen augen keinen unterschied...
bei indexzugriffen machts eher nen großen unterschied, ob der index in nem register lebt, oder im ram und erstmal in ein register rein muß.
und daß nicht für jede funktion eigener globaler speicher rumsteht, sondern immer der selbe genommen wird, wird von allen caches lobend erwähnt und mit viel speed belohnt. wen wegen der glablen flut auch nur eine seite einegalgert wird, könnte man stattdessen in der gleichen zeit 10000000 (zehn millionen, ergibt sich aus 1Mhz(Prozessortakt)/100Hz(Plattenkopftakt)) registerzugrife machen.
ich sagte ja nicht, daß die seicherspragrumentierer unrecht hätten, ich hab nur noch gesagt, daß es sich in viel speed auswirkt.
-
ok ok, ich geb dir ja recht
da muss ich ja glattwegs drüber nachdenken, meine programme mal in diese richtung hin zu optimieren
-
Gregor schrieb:
Optimizer schrieb:
Naaaaaaajaaaaaaa, entweder es sind kleine Variablen, dann ist es egal, oder es sind große, dann sind die aber auf dem Stack noch schlechter aufgehoben, IMHO.
1. Warum ist es bei kleinen Variablen egal?
2. Was hat lokal direkt mit "Stack" zu tun?
3. Warum sind große Variablen auf dem Stack schlechter als auf dem Heap aufgehoben?1. Warum ist es nicht egal, wenn 10 ints auf dem Heap liegen?
2. Liegen lokale Variablen nicht in der Regel auf dem Stack (wenn sie nicht gerade in Registern bleiben)? Überrascht mich jetzt ein bisschen. (EDIT: In Java werden Objekte natürlich mit new erstellt)
3. Weil der Stack schneller voll ist? Stell dir vor, du hast ne Rekursion.Shade Of Mine schrieb:
darf ich jetzt lachen?
wieviele variablen hast du denn? und wenn es nur 20 waeren, waere es immernoch verschwendung.und seit wann liegen alle lokalen variablen am stack?
Vielleicht nicht alle, aber IMHO die meisten. Und wenn 20 ints irgendwo im Heap liegen, ist MIR das egal.
Das soll ja jetzt keine Argumentation für globale Variablen sein - ich vermeide sie ja auch, so gut wie es geht.