diff options
author | Context Git Mirror Bot <phg42.2a@gmail.com> | 2016-05-17 19:31:15 +0200 |
---|---|---|
committer | Context Git Mirror Bot <phg42.2a@gmail.com> | 2016-05-17 19:31:15 +0200 |
commit | 2017d30b4ca772c8eeac4fc0eb9b54e547a9a1d8 (patch) | |
tree | d96df31f305a095c078ea5fb9f639ca34ac36c12 /tex/context/base/trac-inf.lua | |
parent | 53ff76b73cd1f373ecdfb0f7f17df6f352621d6e (diff) | |
download | context-2017d30b4ca772c8eeac4fc0eb9b54e547a9a1d8.tar.gz |
2016-05-17 19:25:00
Diffstat (limited to 'tex/context/base/trac-inf.lua')
-rw-r--r-- | tex/context/base/trac-inf.lua | 209 |
1 files changed, 0 insertions, 209 deletions
diff --git a/tex/context/base/trac-inf.lua b/tex/context/base/trac-inf.lua deleted file mode 100644 index 5497e54eb..000000000 --- a/tex/context/base/trac-inf.lua +++ /dev/null @@ -1,209 +0,0 @@ -if not modules then modules = { } end modules ['trac-inf'] = { - version = 1.001, - comment = "companion to trac-inf.mkiv", - author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", - copyright = "PRAGMA ADE / ConTeXt Development Team", - license = "see context related readme files" -} - --- As we want to protect the global tables, we no longer store the timing --- in the tables themselves but in a hidden timers table so that we don't --- get warnings about assignments. This is more efficient than using rawset --- and rawget. - -local type, tonumber, select = type, tonumber, select -local format, lower, find = string.format, string.lower, string.find -local concat = table.concat -local clock = os.gettimeofday or os.clock -- should go in environment - -local setmetatableindex = table.setmetatableindex -local serialize = table.serialize -local formatters = string.formatters - -statistics = statistics or { } -local statistics = statistics - -statistics.enable = true -statistics.threshold = 0.01 - -local statusinfo, n, registered, timers = { }, 0, { }, { } - -setmetatableindex(timers,function(t,k) - local v = { timing = 0, loadtime = 0 } - t[k] = v - return v -end) - -local function hastiming(instance) - return instance and timers[instance] -end - -local function resettiming(instance) - timers[instance or "notimer"] = { timing = 0, loadtime = 0 } -end - -local function starttiming(instance) - local timer = timers[instance or "notimer"] - local it = timer.timing or 0 - if it == 0 then - timer.starttime = clock() - if not timer.loadtime then - timer.loadtime = 0 - end - end - timer.timing = it + 1 -end - -local function stoptiming(instance) - local timer = timers[instance or "notimer"] - local it = timer.timing - if it > 1 then - timer.timing = it - 1 - else - local starttime = timer.starttime - if starttime then - local stoptime = clock() - local loadtime = stoptime - starttime - timer.stoptime = stoptime - timer.loadtime = timer.loadtime + loadtime - timer.timing = 0 - return loadtime - end - end - return 0 -end - -local function elapsed(instance) - if type(instance) == "number" then - return instance or 0 - else - local timer = timers[instance or "notimer"] - return timer and timer.loadtime or 0 - end -end - -local function elapsedtime(instance) - return format("%0.3f",elapsed(instance)) -end - -local function elapsedindeed(instance) - return elapsed(instance) > statistics.threshold -end - -local function elapsedseconds(instance,rest) -- returns nil if 0 seconds - if elapsedindeed(instance) then - return format("%0.3f seconds %s", elapsed(instance),rest or "") - end -end - -statistics.hastiming = hastiming -statistics.resettiming = resettiming -statistics.starttiming = starttiming -statistics.stoptiming = stoptiming -statistics.elapsed = elapsed -statistics.elapsedtime = elapsedtime -statistics.elapsedindeed = elapsedindeed -statistics.elapsedseconds = elapsedseconds - --- general function .. we might split this module - -function statistics.register(tag,fnc) - if statistics.enable and type(fnc) == "function" then - local rt = registered[tag] or (#statusinfo + 1) - statusinfo[rt] = { tag, fnc } - registered[tag] = rt - if #tag > n then n = #tag end - end -end - -local report = logs.reporter("mkiv lua stats") - -function statistics.show() - if statistics.enable then - -- this code will move - local register = statistics.register - register("used platform", function() - return format("%s, type: %s, binary subtree: %s", - os.platform or "unknown",os.type or "unknown", environment.texos or "unknown") - end) - register("luatex banner", function() - return lower(status.banner) - end) - register("control sequences", function() - return format("%s of %s + %s", status.cs_count, status.hash_size,status.hash_extra) - end) - register("callbacks", function() - local total, indirect = status.callbacks or 0, status.indirect_callbacks or 0 - return format("%s direct, %s indirect, %s total", total-indirect, indirect, total) - end) - if jit then - local jitstatus = { jit.status() } - if jitstatus[1] then - register("luajit options", concat(jitstatus," ",2)) - end - end - -- so far - -- collectgarbage("collect") - register("lua properties",function() - local list = status.list() - local hashchar = tonumber(list.luatex_hashchars) - local mask = lua.mask or "ascii" - return format("engine: %s, used memory: %s, hash type: %s, hash chars: min(%s,40), symbol mask: %s (%s)", - jit and "luajit" or "lua", - statistics.memused(), - list.luatex_hashtype or "default", - hashchar and 2^hashchar or "unknown", - mask, - mask == "utf" and "τεχ" or "tex") - end) - register("runtime",statistics.runtime) - logs.newline() -- initial newline - for i=1,#statusinfo do - local s = statusinfo[i] - local r = s[2]() - if r then - report("%s: %s",s[1],r) - end - end - -- logs.newline() -- final newline - statistics.enable = false - end -end - -function statistics.memused() -- no math.round yet -) - local round = math.round or math.floor - return format("%s MB (ctx: %s MB)",round(collectgarbage("count")/1000), round(status.luastate_bytes/1000000)) -end - -starttiming(statistics) - -function statistics.formatruntime(runtime) -- indirect so it can be overloaded and - return format("%s seconds", runtime) -- indeed that happens in cure-uti.lua -end - -function statistics.runtime() - stoptiming(statistics) - return statistics.formatruntime(elapsedtime(statistics)) -end - -local report = logs.reporter("system") - -function statistics.timed(action) - starttiming("run") - action() - stoptiming("run") - report("total runtime: %s seconds",elapsedtime("run")) -end - --- goodie - -function statistics.tracefunction(base,tag,...) - for i=1,select("#",...) do - local name = select(i,...) - local stat = { } - local func = base[name] - setmetatableindex(stat,function(t,k) t[k] = 0 return 0 end) - base[name] = function(n,k,v) stat[k] = stat[k] + 1 return func(n,k,v) end - statistics.register(formatters["%s.%s"](tag,name),function() return serialize(stat,"calls") end) - end -end |