raze/polymer/eduke32/source/lunatic/profdemo.lua
helixhorned 51c5afaae6 Lunatic: a couple of small changes.
git-svn-id: https://svn.eduke32.com/eduke32@3380 1a8010ca-5511-0410-912e-c29ae57300e0
2013-01-06 18:56:45 +00:00

63 lines
1.8 KiB
Lua
Executable file

#!/usr/bin/env luajit
local stat = require "stat"
if (#arg ~= 2) then
print("Usage: profdemo.lua <eduke32> <demo_arg>")
print("Example: ./profdemo.lua ../../eduke32 -d3:1,8")
print(" (for 8 repetitions of demo 3 at 1 frame per gametic)")
print("")
os.exit(1)
end
local eduke32 = arg[1]
local demoarg = arg[2]
local numrepstr = demoarg:match(",[0-9]+$")
local numreps = tonumber(numrepstr and numrepstr:sub(2)) or 1
local st = { game=stat.new(), drawrooms=stat.new(), drawrest=stat.new() }
local stperx = { game=stat.new(), drawrooms=stat.new(), drawrest=stat.new() }
local unit, unitperx = {}, {}
for i=1,numreps do
local fh = io.popen(eduke32.." "..demoarg)
while (true) do
local str = fh:read("*l")
if (str == nil) then
break
end
local NUMRE = "([0-9]+%.[0-9]+)"
local UNITRE = "[mu]?s"
local RE = "(== demo [0-9]+ ([a-z]+) times: "..NUMRE.." ("..UNITRE..") %("..NUMRE.." ("..UNITRE.."/[a-z]+)%))"
local wholematch, whatstr, time1, unit1, time2, unit2 = str:match(RE)
if (wholematch ~= nil) then
if (numreps==1) then
print(wholematch)
else
st[whatstr]:add(tonumber(time1))
stperx[whatstr]:add(tonumber(time2))
unit[whatstr] = unit1
unitperx[whatstr] = unit2
end
end
end
end
if (numreps > 1) then
local keys = { "game", "drawrooms", "drawrest" }
for i=1,#keys do
local key = keys[i]
if (unit[key] ~= nil) then
print("== "..key.." times:")
print(" "..st[key]:getstatstr().." ["..unit[key].."]")
print(" "..stperx[key]:getstatstr().." ["..unitperx[key].."]")
end
end
end