Ok @uveso, thanks for the heads up!
OnBeatTimings measures separate times for throttled and non-throttled beat functions, which also requires, as you say, destructive hooking of the OnBeat() function in gamemain.lua. This then means that there's effectively a conflict between the hooking in the OnBeatTimings and AI-Uveso mods.
(If these mods are both enabled, then I guess that, depending on the order in which hooks are applied, either the timings will all be shown as zero, or timings will be shown but the issue you were seeing with odd numbers in the mini economic window will come back.)
It's pretty straightforward to do the same kind of timings without destructive hooking, however. This could be done by replacing the OnBeat() implementation in OnBeatTimings mod with the following:
local originalOnBeat = OnBeat
function OnBeat()
local time = CurrentTime()
originalOnBeat()
onBeatTimes[nextOnBeatTime] = CurrentTime() - time
if nextOnBeatTime == table.getn(onBeatTimes) then
nextOnBeatTime = 1
else
nextOnBeatTime = nextOnBeatTime + 1
end
end
When the throttling thing is enabled, however, measuring throttled and non-throttled beat functions together makes it much harder to get a clear signal out of this kind of benchmarking, I find, since there is a kind of feedback effect where stuff taking time changes the frequency with which throttled functions are executed, which then also affects the timings...