Task

Write a program which uses a timer (with the least granularity available
on your system) to time how long a function takes to execute.

Whenever possible, use methods which measure only the processing time used
by the current process; instead of the difference in system time
between start and finish, which could include time used by
other processes on the computer.

This task is intended as a subtask for Measure relative performance of sorting algorithms implementations.




define doId use $x
   $x dup * $x /
 
define doPower use $v, $p
   $v $p pow
 
define doSort
   group
      20000 each choose
   list sort reverse
 
define timeFunc use $fName
   time as $t1
   $fName "" prefer call
   time as $t2
   $fName $t2 $t1 -"%.4g secs for %s\n" print
 
"NULL" timeFunc
42 "doId" timeFunc
12 2 "doPower" timeFunc
"doSort" timeFunc