NOTE: The JavaScript timer is not accurate and this can be seen in the max step / max diff fields

ActionScript code:

var nominal_fps=0;
var real_fps=0;
var timer=getTimer();
var mindiff=0, maxdiff=0, avgdiff=0;
var known_time=0;

this.onEnterFrame = function() {
	nominal_fps++;
	
	var t = jstime*1;
	if (known_time != t) {
		real_fps++;
		known_time=t;
	}
	
	var now = new Date() *1;
	
	var diff = now-t;
	if ((nominal_fps==1) or (diffmaxdiff)) maxdiff=diff;
	avgdiff += diff;
	
	ms = getTimer()-timer;
	if (ms>=1000) {
		info = nominal_fps+" frame advances\n" 
		  + real_fps+" verified fps = "+Math.round(100/nominal_fps*real_fps)+"%\n"
			+ "diff (min/avg/max) = "+mindiff+" / "+Math.round(avgdiff/nominal_fps) + " / "+maxdiff;
		nominal_fps=0;
		real_fps=0;
		avgdiff=0;
		timer = getTimer();
	}
}