!7 module SteadyBeat extends DynBigNumber { int interval = 50; transient long lastTick; transient long count, maxDelaySeen, averageSum; start { doEvery(interval, r tick); doEvery(showInterval, r show); } void show enter { setDescription("MAX/AVG TICK DELAY (TARGET: " + interval + " MS)"); setValue(maxDelaySeen + "/" + average(); } void tick enter { long now = sysNow(); long delay = now-lastTick; maxDelaySeen = max(maxDelaySeen, delay); ++count; averageSum += delay; } // API long average() { ret (averageSum+count/2)/count; } }