[fluksod] use the new table.create to eliminate the rehashes in json_encode
This commit is contained in:
parent
18897a307b
commit
ab393a2c21
|
@ -113,19 +113,32 @@ function polish(M, now, cutoff)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function json_encode(M)
|
function json_encode(M, entries)
|
||||||
local J = {}
|
local J = {}
|
||||||
|
|
||||||
|
if entries then
|
||||||
|
arr_size = 5*entries + 2
|
||||||
|
else
|
||||||
|
arr_size = 0
|
||||||
|
end
|
||||||
|
|
||||||
for sensor, T in pairs(M) do
|
for sensor, T in pairs(M) do
|
||||||
local H = timestamps(T)
|
local H = timestamps(T)
|
||||||
local SB = {'['} -- use a string buffer for building up the JSON string
|
|
||||||
|
local SB = table.create(arr_size, 0)
|
||||||
|
SB[1] = '[' -- use a string buffer for building up the JSON string
|
||||||
|
|
||||||
for k, timestamp in ipairs(H) do
|
for k, timestamp in ipairs(H) do
|
||||||
SB[#SB+1] = '[' .. timestamp .. ',' .. T[timestamp] .. '],'
|
SB[#SB+1] = '['
|
||||||
|
SB[#SB+1] = timestamp
|
||||||
|
SB[#SB+1] = ','
|
||||||
|
SB[#SB+1] = T[timestamp]
|
||||||
|
SB[#SB+1] = '],'
|
||||||
end
|
end
|
||||||
|
|
||||||
SB[#SB] = SB[#SB]:sub(1, -2) -- remove the trailing comma from the last entry
|
SB[#SB] = SB[#SB]:sub(1, -2) -- remove the trailing comma from the last entry
|
||||||
SB[#SB+1] = ']'
|
SB[#SB+1] = ']'
|
||||||
|
|
||||||
J[sensor] = table.concat(SB)
|
J[sensor] = table.concat(SB)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -321,7 +321,7 @@ function publish(child)
|
||||||
|
|
||||||
while true do
|
while true do
|
||||||
measurements:polish(os.time(), LAN_POLISH_CUTOFF)
|
measurements:polish(os.time(), LAN_POLISH_CUTOFF)
|
||||||
local measurements_json = measurements:json_encode()
|
local measurements_json = measurements:json_encode(LAN_POLISH_CUTOFF)
|
||||||
|
|
||||||
for sensor_id, json in pairs(measurements_json) do
|
for sensor_id, json in pairs(measurements_json) do
|
||||||
local file = LAN_PUBLISH_PATH .. '/' .. sensor_id
|
local file = LAN_PUBLISH_PATH .. '/' .. sensor_id
|
||||||
|
|
Loading…
Reference in New Issue