[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Optimisations
- From: David Manura <dm.lua@...>
- Date: Wed, 24 Oct 2007 01:19:41 +0000 (UTC)
Eva Schmidt writes:
> I wondered if it would also be an optimisation to define functions in a single
> Lua script also as local everytime? Does this make any sense?
Defining functions as local not only can provide a small performance increase
but also--more significantly I maintain--allows improved privacy and better
static checking of undefined variables via the "luac -p -l" trick[1].
The lexical scoping of locals does require predeclaration and sometimes makes
the code only slightly more awkward than otherwise:
local b -- Predeclare.
local function a(n)
if n == 0 then return end
print 'even'; b(n-1)
end
function b(n) -- This is a local that only looks like a global.
print 'odd'; a(n-1)
end
a(10)
It also makes code immune to changes to those variables because it is a type of
caching:
do
local print = print
function test(n) print(n^2) end
end
...
print = my_print -- redefine print
test(2) -- uses original print.
[1] http://lua-users.org/wiki/DetectingUndefinedVariables