2010-12-29 6 views
4

Insbesondere in Lua, tue ich schadet dies tun:In Lua, sollte ich eine Variable jede Iteration einer Schleife oder vor der Schleife definieren?

for i = 1, 10 do 
    local foo = bar() 
    -- do stuff with foo 
end 

statt dem:

local foo 
for i = 1, 10 do 
    foo = bar() 
    -- do stuff with foo 
end 

Ich meine, wird Lua versucht jede Iteration für foo neue Speicher zu reservieren? Könnte der erste Block zu einer langsameren Ausführung führen?

+0

Haben Sie versucht, sie zu Timing? – marcog

+0

tatsächlich habe ich ein paar einfache Tests gemacht und es gab keinen Unterschied –

+4

Siehe auch die Ausgabe von 'Luac -l', um den VM-Code zu sehen. – lhf

Antwort

5

Gehen Sie für die sicherste Alternative, die den kleinsten Bereich für alle Variablen verwenden soll. Hinsichtlich der Effizienz werden lokale Variablen in einem Stapel gespeichert; Innerhalb der Schleife erfolgt keine Speicherzuordnung.

+0

danke, das löst meine Zweifel –

+0

@arkilus Denken Sie daran, Antworten aufzuschlagen, die Sie akzeptieren. Dies geschieht durch Klicken auf den Pfeil nach oben. – ponzao

+0

@ponzao Ich dachte, das wäre nur nötig, wenn es mehr als eine Antwort gäbe. Wie auch immer, schon, danke. –

Verwandte Themen