//fnc_dumpPerformanceCounters.sqf
#define DEBUG_MODE_FULL
#include "script_component.hpp"


diag_log text format["REGISTERED ACE PFH HANDLERS"];
diag_log text format["-------------------------------------------"];
if(!isNil "ACE_PFH_COUNTER") then {
	{
		private["_pfh"];
		_pfh = _x select 0;
		diag_log text format["Registered PFH: id=%1, %1:%2", (_pfh select 0), (_pfh select 1), (_pfh select 2) ]; 
	} forEach ACE_PFH_COUNTER;
};

diag_log text format["ACE COUNTER RESULTS"];
diag_log text format["-------------------------------------------"];
{
	private["_counterEntry", "_iter", "_total", "_count", "_delta", "_averageResult"];
	_counterEntry = _x;
	_iter = 0;
	_total = 0;
	_count = 0;
	_averageResult = 0;
	if( (count _counterEntry) > 3) then {
		// calc
		{
			if(_iter > 2) then {
				_count = _count + 1;
				_delta = (_x select 1) - (_x select 0);
				
				_total = _total + _delta;
			};
			_iter = _iter + 1;
		} forEach _counterEntry;
		
		// results
		_averageResult = (_total / _count) * 1000;
		
		// dump results
		diag_log text format["%1: Average: %2s / %3 = %4ms", (_counterEntry select 0), _total, _count, _averageResult]; 
	} else {
		diag_log text format["%1: No results", (_counterEntry select 0) ];
	};
} forEach ACE_COUNTERS;

/*
// Dump PFH Trackers
diag_log text format["ACE_PERFORMANCE_EXCESSIVE_STEP_TRACKER"];
diag_log text format["-------------------------------------------"];
{
	private["_delay"];
	_delay = _x select 2;
	//if(_delay > 0) then { _delay = _delay / 1000; };
	
	diag_log text format["%1: %2s, delay=%3, handle=%4",(_x select 0), _delay, (_x select 3), (_x select 4)];
} forEach ACE_PERFORMANCE_EXCESSIVE_STEP_TRACKER;

// Dump PFH Trackers
diag_log text format["ACE_PERFORMANCE_EXCESSIVE_FRAME_TRACKER"];
diag_log text format["-------------------------------------------"];
{
	private["_delta"];
	_delta = _x select 1;
	//if(_delta > 0) then { _delta = _delta / 1000; };
	diag_log text format["  DELTA: %1s", _delta];
} forEach ACE_PERFORMANCE_EXCESSIVE_FRAME_TRACKER;

//{
//
//} forEach ACRE_EXCESSIVE_FRAME_TRACKER;

*/