[OT -- not fpc-related -- just a side note]

On Fri, 7 May 2010 00:34:11 +0200
Jonas Maebe <jonas.ma...@elis.ugent.be> wrote:

> in general my bias would be much more against than in favour of global 
> variables from a speed perspective

In _some_ dynamic languages using a virtual machine at least (eg Lua), local 
variables are actually stored in an array, after a one->one replacement from 
name to index at "compile"-time. While global ones are still looked up in a 
symbol table (associative array implemented as hash table) by name.
This indeed makes some speed difference ;-) (~ 50% in Lua) For instance:

<code lang=lua>
require "os" ; time = os.time
format = string.format
N = 333333333

f = function()
   a = 1                        -- implicitely global
   local b = 0
   for i = 1,N do b=a end
end
g = function()
   local a = 1
   local b = 0
   for i = 1,N do b=a end
end

-- global case
t = time()
f()
t = time() - t
print(format("global : %2.0fs", t))     -- 25s
-- local case
t = time()
g()
t = time() - t
print(format("local  : %2.0fs", t))     -- 13s
</code>


Denis
________________________________

vit esse estrany ☣

spir.wikidot.com
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to