1
Fork 0

refactor: Use a more representative code style

Removing global indexing takes off quite a bit of run time.
This commit is contained in:
Lucas Schwiderski 2022-10-11 23:13:55 +02:00
parent f4493fe5ce
commit 33ff43c859
Signed by: lucas
GPG key ID: AA12679AAA6DF4D8
2 changed files with 217 additions and 218 deletions

View file

@ -9,328 +9,328 @@ Lua: lua5.1
Number of elements: 2 Number of elements: 2
Number of iterations: 2097152 Number of iterations: 2097152
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.552162 numeric for: 0.371987
ipairs{...}: 0.690995 ipairs{...}: 0.611327
select : 0.286485 select : 0.241211
combination: 0.25396 combination: 0.190263
Number of elements: 4 Number of elements: 4
Number of iterations: 1048576 Number of iterations: 1048576
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.417153 numeric for: 0.266934
ipairs{...}: 0.545133 ipairs{...}: 0.491831
select : 0.328147 select : 0.28037
combination: 0.310883 combination: 0.287743
Number of elements: 8 Number of elements: 8
Number of iterations: 524288 Number of iterations: 524288
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.348244 numeric for: 0.227304
ipairs{...}: 0.471477 ipairs{...}: 0.459805
select : 0.367715 select : 0.334971
combination: 0.371746 combination: 0.33622
Number of elements: 16 Number of elements: 16
Number of iterations: 262144 Number of iterations: 262144
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.302945 numeric for: 0.186637
ipairs{...}: 0.428739 ipairs{...}: 0.42781
select : 0.443048 select : 0.405969
combination: 0.418883 combination: 0.379274
Number of elements: 32 Number of elements: 32
Number of iterations: 131072 Number of iterations: 131072
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.288698 numeric for: 0.166135
ipairs{...}: 0.415577 ipairs{...}: 0.380042
select : 0.602379 select : 0.567623
combination: 0.39393 combination: 0.359938
Number of elements: 64 Number of elements: 64
Number of iterations: 65536 Number of iterations: 65536
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.267878 numeric for: 0.143388
ipairs{...}: 0.406569 ipairs{...}: 0.353311
select : 0.964695 select : 0.954676
combination: 0.390686 combination: 0.368544
Number of elements: 128 Number of elements: 128
Number of iterations: 32768 Number of iterations: 32768
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.254064 numeric for: 0.180336
ipairs{...}: 0.384773 ipairs{...}: 0.393123
select : 1.625094 select : 1.763199
combination: 0.383372 combination: 0.336671
Number of elements: 256 Number of elements: 256
Number of iterations: 16384 Number of iterations: 16384
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.247988 numeric for: 0.126873
ipairs{...}: 0.384708 ipairs{...}: 0.318658
select : 2.943422 select : 3.104612
combination: 0.381021 combination: 0.377221
Lua: lua5.2 Lua: lua5.2
Number of elements: 2 Number of elements: 2
Number of iterations: 2097152 Number of iterations: 2097152
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.560537 numeric for: 0.398561
ipairs{...}: 0.746473 ipairs{...}: 0.761983
select : 0.537075 select : 0.487142
combination: 0.609935 combination: 0.532769
Number of elements: 4 Number of elements: 4
Number of iterations: 1048576 Number of iterations: 1048576
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.436931 numeric for: 0.27465
ipairs{...}: 0.563225 ipairs{...}: 0.534074
select : 0.487017 select : 0.449063
combination: 0.519111 combination: 0.439299
Number of elements: 8 Number of elements: 8
Number of iterations: 524288 Number of iterations: 524288
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.363167 numeric for: 0.205838
ipairs{...}: 0.465143 ipairs{...}: 0.412852
select : 0.474101 select : 0.409167
combination: 0.489039 combination: 0.419125
Number of elements: 16 Number of elements: 16
Number of iterations: 262144 Number of iterations: 262144
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.324731 numeric for: 0.195762
ipairs{...}: 0.414151 ipairs{...}: 0.369171
select : 0.530607 select : 0.457718
combination: 0.446816 combination: 0.406086
Number of elements: 32 Number of elements: 32
Number of iterations: 131072 Number of iterations: 131072
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.306231 numeric for: 0.166519
ipairs{...}: 0.392634 ipairs{...}: 0.348589
select : 0.661512 select : 0.621922
combination: 0.408606 combination: 0.354629
Number of elements: 64 Number of elements: 64
Number of iterations: 65536 Number of iterations: 65536
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.305991 numeric for: 0.151066
ipairs{...}: 0.372077 ipairs{...}: 0.331067
select : 1.049758 select : 1.026244
combination: 0.379606 combination: 0.355329
Number of elements: 128 Number of elements: 128
Number of iterations: 32768 Number of iterations: 32768
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.287538 numeric for: 0.145573
ipairs{...}: 0.372301 ipairs{...}: 0.326475
select : 1.77883 select : 1.754032
combination: 0.369424 combination: 0.3286
Number of elements: 256 Number of elements: 256
Number of iterations: 16384 Number of iterations: 16384
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.287302 numeric for: 0.139801
ipairs{...}: 0.358031 ipairs{...}: 0.307179
select : 3.178964 select : 3.221814
combination: 0.363598 combination: 0.323516
Lua: lua5.3 Lua: lua5.3
Number of elements: 2 Number of elements: 2
Number of iterations: 2097152 Number of iterations: 2097152
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.46859 numeric for: 0.351627
ipairs{...}: 0.640256 ipairs{...}: 0.601889
select : 0.437587 select : 0.405517
combination: 0.483519 combination: 0.430988
Number of elements: 4 Number of elements: 4
Number of iterations: 1048576 Number of iterations: 1048576
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.364446 numeric for: 0.248043
ipairs{...}: 0.466707 ipairs{...}: 0.444649
select : 0.390046 select : 0.363131
combination: 0.423592 combination: 0.370977
Number of elements: 8 Number of elements: 8
Number of iterations: 524288 Number of iterations: 524288
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.285324 numeric for: 0.188097
ipairs{...}: 0.36883 ipairs{...}: 0.332006
select : 0.386637 select : 0.353665
combination: 0.402977 combination: 0.352776
Number of elements: 16 Number of elements: 16
Number of iterations: 262144 Number of iterations: 262144
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.247901 numeric for: 0.148284
ipairs{...}: 0.323775 ipairs{...}: 0.286253
select : 0.438333 select : 0.413759
combination: 0.341976 combination: 0.303672
Number of elements: 32 Number of elements: 32
Number of iterations: 131072 Number of iterations: 131072
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.234862 numeric for: 0.134151
ipairs{...}: 0.302702 ipairs{...}: 0.262933
select : 0.545853 select : 0.519517
combination: 0.317096 combination: 0.271823
Number of elements: 64 Number of elements: 64
Number of iterations: 65536 Number of iterations: 65536
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.220949 numeric for: 0.121241
ipairs{...}: 0.290624 ipairs{...}: 0.242814
select : 0.8336 select : 0.816218
combination: 0.292184 combination: 0.251495
Number of elements: 128 Number of elements: 128
Number of iterations: 32768 Number of iterations: 32768
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.213136 numeric for: 0.110836
ipairs{...}: 0.28163 ipairs{...}: 0.230441
select : 1.308727 select : 1.308072
combination: 0.279163 combination: 0.239512
Number of elements: 256 Number of elements: 256
Number of iterations: 16384 Number of iterations: 16384
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.215232 numeric for: 0.122321
ipairs{...}: 0.272502 ipairs{...}: 0.229355
select : 2.274558 select : 2.319636
combination: 0.273622 combination: 0.241176
Lua: lua5.4 Lua: lua5.4
Number of elements: 2 Number of elements: 2
Number of iterations: 2097152 Number of iterations: 2097152
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.373074 numeric for: 0.327543
ipairs{...}: 0.512667 ipairs{...}: 0.520322
select : 0.368981 select : 0.372057
combination: 0.426854 combination: 0.386067
Number of elements: 4 Number of elements: 4
Number of iterations: 1048576 Number of iterations: 1048576
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.330613 numeric for: 0.193464
ipairs{...}: 0.42877 ipairs{...}: 0.382319
select : 0.371128 select : 0.315009
combination: 0.427162 combination: 0.318594
Number of elements: 8 Number of elements: 8
Number of iterations: 524288 Number of iterations: 524288
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.218039 numeric for: 0.131633
ipairs{...}: 0.378982 ipairs{...}: 0.286164
select : 0.42071 select : 0.309684
combination: 0.388871 combination: 0.314373
Number of elements: 16 Number of elements: 16
Number of iterations: 262144 Number of iterations: 262144
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.207389 numeric for: 0.101963
ipairs{...}: 0.314401 ipairs{...}: 0.244499
select : 0.466114 select : 0.366027
combination: 0.325659 combination: 0.255374
Number of elements: 32 Number of elements: 32
Number of iterations: 131072 Number of iterations: 131072
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.203002 numeric for: 0.085311
ipairs{...}: 0.265324 ipairs{...}: 0.215857
select : 0.530656 select : 0.507201
combination: 0.311731 combination: 0.22148
Number of elements: 64 Number of elements: 64
Number of iterations: 65536 Number of iterations: 65536
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.194642 numeric for: 0.07508
ipairs{...}: 0.310673 ipairs{...}: 0.208738
select : 0.909296 select : 0.780712
combination: 0.280604 combination: 0.213357
Number of elements: 128 Number of elements: 128
Number of iterations: 32768 Number of iterations: 32768
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.14598 numeric for: 0.071918
ipairs{...}: 0.276733 ipairs{...}: 0.200097
select : 1.36814 select : 1.264535
combination: 0.260261 combination: 0.211788
Number of elements: 256 Number of elements: 256
Number of iterations: 16384 Number of iterations: 16384
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.141446 numeric for: 0.078431
ipairs{...}: 0.244541 ipairs{...}: 0.204291
select : 2.375652 select : 2.307693
combination: 0.243239 combination: 0.203908
Lua: luajit Lua: luajit
Number of elements: 2 Number of elements: 2
Number of iterations: 2097152 Number of iterations: 2097152
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.222393 numeric for: 0.213411
ipairs{...}: 0.221411 ipairs{...}: 0.234036
select : 0.121801 select : 0.145688
combination: 0.112205 combination: 0.12318
Number of elements: 4 Number of elements: 4
Number of iterations: 1048576 Number of iterations: 1048576
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.126469 numeric for: 0.144282
ipairs{...}: 0.122567 ipairs{...}: 0.135887
select : 0.138826 select : 0.127091
combination: 0.134571 combination: 0.108254
Number of elements: 8 Number of elements: 8
Number of iterations: 524288 Number of iterations: 524288
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.076119 numeric for: 0.071371
ipairs{...}: 0.075873 ipairs{...}: 0.074621
select : 0.181403 select : 0.158596
combination: 0.173958 combination: 0.153072
Number of elements: 16 Number of elements: 16
Number of iterations: 262144 Number of iterations: 262144
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.056428 numeric for: 0.053648
ipairs{...}: 0.056107 ipairs{...}: 0.059854
select : 0.274034 select : 0.251541
combination: 0.066305 combination: 0.064755
Number of elements: 32 Number of elements: 32
Number of iterations: 131072 Number of iterations: 131072
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.041979 numeric for: 0.039764
ipairs{...}: 0.043606 ipairs{...}: 0.04303
select : 0.478121 select : 0.452093
combination: 0.051035 combination: 0.049187
Number of elements: 64 Number of elements: 64
Number of iterations: 65536 Number of iterations: 65536
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.033367 numeric for: 0.03186
ipairs{...}: 0.035739 ipairs{...}: 0.037593
select : 0.808869 select : 0.809323
combination: 0.040126 combination: 0.042127
Number of elements: 128 Number of elements: 128
Number of iterations: 32768 Number of iterations: 32768
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.025935 numeric for: 0.025502
ipairs{...}: 0.029247 ipairs{...}: 0.030757
select : 1.473057 select : 1.437088
combination: 0.034267 combination: 0.035736
Number of elements: 256 Number of elements: 256
Number of iterations: 16384 Number of iterations: 16384
---- STARTING TEST ---- ---- STARTING TEST ----
numeric for: 0.023097 numeric for: 0.022848
ipairs{...}: 0.026557 ipairs{...}: 0.027503
select : 2.668443 select : 2.710008
combination: 0.030818000000001 combination: 0.032227000000001

View file

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