

Time-fnc.sl : code to time function calls.



Usage:

	do 
	(timef function-name-1 function-name-2 ...)

	Timef is a fexpr.
	It will redefine the functions named so that timing information is
	kept on these functions.  
	This information is kept on the property list of the function name.
	The properties used are `time' and `number-of-calls'.

	(get function-name 'time) gives you the total time in the function.
	(not counting gc time).
	Note, this is the time from entrance to exit.
	The timef function redefines the function with an
	unwind-protect, so calls that are interrupted
	by *throws are counted.

	(get function-name 'number-of-calls) gives you the number of times
	the function is called.

	To stop timing do : 
	(untimef function-name1 ..)
	or do (untimef) for all functions.
	(untimef) is a fexpr.

	To print timing information do 
	(print-time-info function-name-1 function-name-2 ..)

	or do (print-time-info) for timing information on all function names.

	special variables used: 
	*timed-functions* : list of all functions currently being timed.
	*all-timed-functions* : list of all functions ever timed in the
		current session.

	Comment: if tr is called on a called on a function that is already
	being timed, and then untimef is called on the function, the
	function will no longer be traced.

