FwSDK Function Timer
version 0.1
By Sam Rauch (srauch@umich.edu)

Please send me any bug reports, enhancement ideas, etc...

NOTE: PLEASE BACKUP YOUR AVIGO BEFORE USING THIS PROGRAM.  IT IS AN EARLY BETA VERSION AND
 I DO NOT KNOW WHAT PROPENSITY IT MIGHT HAVE FOR CAUSING PROBLEMS.

How to use it:

1) Select a function from the list of functions
	(At this point only the graphics related calls are included)
2) Adjust parameters by clicking on parameter and entering via
   LIMITED keyboard
   (only lower-case characters, #'s, some symbols, & Backspace are functional)
   Enter sets the parameter

   NOTE: You will need to know something about the range of acceptable values for the
   function.  It is possible that you could cause problems if you enter bad values, but
   I do not know.

3) Click on "Begin"

(2 Tests will execute and results will be displayed)



Notes on how tests are done:

Real-Time Clock Test Algo
	Set RTC to 10, wait until RTC=0 /*standardize start point*/
	Set RTC to 64   (64*15.6 = 998.4 msec = ~1second)
	Execute function until RTC=0, counting loops

Internal Clock Test Algo
	GetDate, wait until GetDate returns 2 seconds in future /*standardize start point*/
	GetDate, record second
	Execute function until GetDate returns next second, counting loops



Notes on Results
	# of loops
		Simply the number of times the loop executed
	Time/Loop(ms)
		= 1000 / #loops for this function
		Milliseconds taken by a single iteration of the loop with this function
		!THIS VALUE COULD BE MISLEADING AS IT INCLUDES THE TIME TAKEN BY THE LOOP!
	Time/Func(ms)
		= 1000 / #loops for this function - 1000 / #loops for an empty test loop
		Milliseconds taken by a single iteration of the loop with this function minus
		  milliseconds taken by a single iteration of the loop with no function
		IF MY METHODS ARE SOUND, THIS SHOULD BE A CLOSE APPROXIMATION OF TIME TAKEN
		FOR A SINGLE CALL OF THIS FUNCTION.  IF THEY ARE NOT PRECISE, THEY SHOULD AT
		AT LEAST BE SUITABLE FOR RELATIVE COMPARISONS.

In general, the Time/Func should be the very close using the Real-Time clock and Internal
Clock tests.  However, it seems that when a function call takes longer than 15.6 msecs,
or one step of the Real-Time clock, the Real-Time clock does not work correctly.  It will
report that each iteration of the loop takes 15.6 ms.  I believe this is because the
interrupt that decrements the RTC counter is not generated until the function returns or
something to that effect.  In this
case, the Internal Clock provides more reliable time information.  I have also found other
times when they differ and I am not sure what is happening there - Again, I would probably
be inclined to trust the Internal Clock method whenever they differ.
