67 lines
1.4 KiB
Lua
67 lines
1.4 KiB
Lua
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
|