From 6876aa6a4fbe042ccffad9be345bdf789f61bd67 Mon Sep 17 00:00:00 2001 From: Ciaran Gultnieks Date: Sat, 15 Feb 2014 12:22:07 +0000 Subject: [PATCH] Performance improvement when transmitting The 'checked' table is passed by reference anyway, so reassigning it at every step along the network is just wasting time by creating more and more copies of it. --- digilines/internal.lua | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/digilines/internal.lua b/digilines/internal.lua index ce4012c..9a4780c 100644 --- a/digilines/internal.lua +++ b/digilines/internal.lua @@ -66,9 +66,8 @@ function digiline:rules_link_anydir(output, input) end function digiline:transmit(pos, channel, msg, checked) - checked = checked or {} local checkedid = tostring(pos.x).."_"..tostring(pos.y).."_"..tostring(pos.z) - if checked[checkedid] then return checked end + if checked[checkedid] then return end checked[checkedid] = true local node = minetest.env:get_node(pos) @@ -86,9 +85,9 @@ function digiline:transmit(pos, channel, msg, checked) local rules = digiline:importrules(spec.wire.rules, node) for _,rule in ipairs(rules) do if digiline:rules_link(pos, digiline:addPosRule(pos, rule)) then - checked = digiline:transmit(digiline:addPosRule(pos, rule), channel, msg, checked) + digiline:transmit(digiline:addPosRule(pos, rule), channel, msg, checked) end end end - return checked + return end