codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
local foo = { a=1, b=2, c=3 } bar = setmetatable({}, {__index = foo}) baz = setmetatable({}, {__index = function(_,x) return foo[x] end }) local iterations, begin, a,b,c = 1000000 begin = os.clock() for i=1,iterations do a,b,c = foo.a,foo.b,foo.c end local direct = os.clock() - begin begin = os.clock() for i=1,iterations do a,b,c = bar.a,bar.b,bar.c end local meta = os.clock() - begin begin = os.clock() for i=1,iterations do a,b,c = baz.a,baz.b,baz.c end local closure = os.clock() - begin local nop = function(x,y) return begin end begin = os.clock() for i=1,iterations do nop(10,20) nop(10,20) nop(10,20) end local funcoverhead = os.clock() - begin local function printf(...) print(string.format(...)) end printf('%25s: %.2f', 'direct', direct) printf('%25s: %.2f (%.2f * direct)', 'metatable', meta, meta/direct) printf('%25s: %.2f (%.2f * metatable)', 'closure', closure, closure/meta) printf('%25s: %.2f', 'metatable + func overhead', meta + funcoverhead)
Private
[
?
]
Run code
Submit