Execute a function reps times, return a tuple with the elapsed total
CPU time in seconds, the time per call and the function’s output.

Under Unix, the return value is the sum of user+system time consumed by
the process, computed via the resource module. This prevents problems
related to the wraparound effect which the time.clock() function has.

Under Windows the return value is in wall clock seconds. See the
documentation for the time module for more details.