CONTAINER =
{
Ver = "0.3",
--- integer lookup for the DateTime
timeLUT = {[0]="00",[1]="01",[2]="02",[3]="03",[4]="04",[5]="05",[6]="06",[7]="07",[8]="08",[9]="09"},
strCACHE = { [100] = ""},
SubStrA = "Unknown",
SubAPrst = "ASjdasda",
}
for i = 10,99,1 do
CONTAINER.timeLUT[i] = tostring(i)
end
DataBlob = {
vAng = { x = 1.0, y = 2.0, z = 3.0},
vPos = { x = 2131.0, y = 42.0, z = -433.0},
Composite =
{
VARIANT1 = { isFirst = true, isMiddle = false, isLast = true },
VARIANT2 = { isIgnored = true},
VARIANT3 = { isAccurate = false },
VARIANT4 = { bEnabled = false },
VARIANT5 = { isLocked = false, ImpactV = 1.8 },
VARIANT6 = { troCoWal = true },
VARIANT7 = { isBroCal = false }
}
}
Global = {
isLocked = function(x)return false end,
GetTimeStamp = function(x)return math.random() + math.random(1, 99) end,
GetLocalTimeStamp = function(x)return math.random() + math.random(1, 99) end,
GetTotalPTime = function(x)return math.random() + math.random(1, 99) end,
GetDataBlob = function(x)return DataBlob end,
GetName = function(x)return "AThing" end
}
function CONTAINER.PopulateState()
-- GC first
local gcInit = collectgarbage("count")
-- Cachig globals
local floor, mod, tostring = math.floor, math.mod, tostring
local G = Global
local intCache = CONTAINER.timeLUT
local strBuilder = CONTAINER.strCACHE
-- Fetching & caching data
local locDB, Name = G.GetDataBlob(), G.GetName()
local ts = G.GetTimeStamp()
local lag = math.random() + math.random(1, 2)
-- Local helpers
local function sBool(bool)
return bool and "1" or "0"
end
local t = 0
function cAppend(cTbl, ...)
for i=0, arg.n do
cTbl[#cTbl+1] = arg[i]
t = t +1
end
end
function cClear(cTbl)
for _=0, #cTbl do
cTbl[#cTbl] = nil
end
end
-- Populating table
cClear(strBuilder)
if locDB ~= nil then
locDB = G.GetDataBlob()
local PC = locDB.Composite
local tp = G.GetTotalPTime()
local d, h, m, s = floor(tp/86400), floor(mod(tp, 86400)/3600), floor(mod(tp,3600)/60), floor(mod(tp,60))
cAppend(strBuilder, "[", Name, "]:\n",
"Ang :", "(", tostring(locDB.vAng.x),",",tostring(locDB.vAng.y),",",tostring(locDB.vAng.z), ")\n",
"Pos :", "(", tostring(locDB.vPos.x),",",tostring(locDB.vPos.y),",",tostring(locDB.vPos.z), ")\n",
"isLocked: ", sBool(G.isLocked()), "\n")
if (locDB.Composite["VARIANT1"] ~= nil) then
cAppend(strBuilder, "isFirst / isLast: ", sBool(PC.VARIANT1.isFirst)," / ",sBool(PC.VARIANT1.isLast), "\n",
"isMiddle: ", sBool(PC.VARIANT1.isMiddle), "\n")
end
if (locDB.Composite["VARIANT2"] ~= nil) then
cAppend(strBuilder, "isIgnored: ", sBool(PC.VARIANT2.isIgnored), "\n")
end
if (locDB.Composite["VARIANT4"] ~= nil) then
cAppend(strBuilder, "bEnabled: ", sBool(PC.VARIANT4.bEnabled), "\n")
end
if (locDB.Composite["VARIANT3"] ~= nil) then
cAppend(strBuilder, "isAccurate: ", sBool(PC.VARIANT3.isAccurate), "\n")
end
if (locDB.Composite["VARIANT5"] ~= nil) then
cAppend(strBuilder, "isLocked: ", sBool(PC.VARIANT5.isLocked), "\n",
"ImpactV: ", tostring(PC.VARIANT5.ImpactV), "\n")
end
if (locDB.Composite["VARIANT6"]) then
cAppend(strBuilder, "troCoWal: ", sBool(PC.VARIANT6.troCoWal), "\n")
end
if (locDB.Composite["VARIANT7"]) then
cAppend(strBuilder, "isBroCal: ", sBool(PC.VARIANT7.isBroCal), "\n")
end
local gcLast = collectgarbage("count")
cAppend(strBuilder, "Time taken: ",intCache[d],":",intCache[h],":",intCache[m],":",intCache[s], "\n",
"TS: ", tostring(ts), "\n",
"local TS: ", tostring(G.GetLocalTimeStamp()),"\n",
"Lag: ", string.format("%.5f", lag) , " ms\n",
"Heap: ", tostring(gcLast), "KB\n")
cAppend(strBuilder, "Alloc: ", tostring(gcLast-gcInit),"KB"," (v", CONTAINER.Ver, ")","\n",
"Extra: ", CONTAINER.SubStrA, "_", CONTAINER.SubAPrst, "\n")
print("Allocated pre-concat: " .. tostring(gcLast-gcInit))
end
collectgarbage("collect")
table.concat(strBuilder)
print("Allocated post-concat: " .. tostring(collectgarbage("count")))
print("Total table metabytes: " .. tostring(t*16))
end
collectgarbage("collect")
CONTAINER.PopulateState()