local function v51_unpack(t) return table.remove(t, 1), unpack(t) end local function try(fnc, n, ...) local start = os.clock() for _ = 1, n do fnc(...) end print(os.clock()-start) end local unpack = table.unpack or v51_unpack for i = 1, 8 do local values = {} local n = 2^i print(("Number of elements: %i"):format(n)) for j =1, n*2 do values[#values+1] = j end n = 2^22 / n print(("Number of iterations: %i"):format(n)) print("---- STARTING TEST ----") io.write "numeric for: " try(function(...) local args = {...} for j = 1, #args do local _ = args[j] end end, n, unpack(values)) io.write "ipairs{...}: " try(function(...) local args = {...} for _, value in ipairs(args) do local _ = value end end, n, unpack(values)) io.write "select : " try(function(...) for j = 1,select("#",...) do local _ = select(j,...) end end, n, unpack(values)) ---[[ io.write "combination: " try(function(...) local n_args = select("#",...) if n_args <= 16 then for j = 1, n_args do local _ = select(j,...) end else local args = {...} for _, value in ipairs(args) do local _ = value end end end, n, unpack(values)) --]] print() end