mirror of
https://github.com/kepler155c/opus
synced 2024-11-05 08:26:16 +00:00
51 lines
1.1 KiB
Lua
51 lines
1.1 KiB
Lua
local Logger = require('logger')
|
|
|
|
local Profile = {
|
|
start = function() end,
|
|
stop = function() end,
|
|
display = function() end,
|
|
methods = { },
|
|
}
|
|
|
|
local function Profile_display()
|
|
Logger.log('profile', 'Profiling results')
|
|
for k,v in pairs(Profile.methods) do
|
|
Logger.log('profile', '%s: %f %d %f',
|
|
k, Util.round(v.elapsed, 2), v.count, Util.round(v.elapsed/v.count, 2))
|
|
end
|
|
Profile.methods = { }
|
|
end
|
|
|
|
local function Profile_start(name)
|
|
local p = Profile.methods[name]
|
|
if not p then
|
|
p = { }
|
|
p.elapsed = 0
|
|
p.count = 0
|
|
Profile.methods[name] = p
|
|
end
|
|
p.clock = os.clock()
|
|
return p
|
|
end
|
|
|
|
local function Profile_stop(name)
|
|
local p = Profile.methods[name]
|
|
p.elapsed = p.elapsed + (os.clock() - p.clock)
|
|
p.count = p.count + 1
|
|
end
|
|
|
|
function Profile.enable()
|
|
Logger.log('profile', 'Profiling enabled')
|
|
Profile.start = Profile_start
|
|
Profile.stop = Profile_stop
|
|
Profile.display = Profile_display
|
|
end
|
|
|
|
function Profile.disable()
|
|
Profile.start = function() end
|
|
Profile.stop = function() end
|
|
Profile.display = function() end
|
|
end
|
|
|
|
return Profile
|