mcl_devtest/abmp/init.lua

36 lines
1.1 KiB
Lua

local count={}
local times={}
local max_times={}
local total=0
local nabm=0
minetest.register_on_mods_loaded(function()
for k,v in pairs(minetest.registered_abms) do
local n=v.label
local olda=v.action
minetest.registered_abms[k].action=function(pos, node, aoc, aocw)
local t1=os.clock()
local r=olda(pos, node, aoc, aocw)
times[n]=os.clock()-t1
if times[n] > ( max_times[n] or 0 ) then max_times[n] = times[n] end
if not count[n] then count[n] = 0 end
count[n]=count[n]+1
total=total+times[n]
nabm=nabm+1
return r
end
end
end)
minetest.register_chatcommand("abmp",{privs={debug=true},
description="Give an overview of the registered abms and how long they each take",
func=function(p)
table.sort(count)
table.sort(times)
minetest.chat_send_player(p,"counts:"..dump(count))
minetest.chat_send_player(p,"=== times:"..dump(times))
minetest.chat_send_player(p,"=== max times:"..dump(max_times))
minetest.chat_send_player(p,"total abm time last interval:"..dump(total))
minetest.chat_send_player(p,"total abms registered:"..dump(#times))
end})