tick and tock functions



On 12/27/06, Stavros Macrakis <macrakis at alum.mit.edu> wrote:

> Why would anyone want tick and tock rather than just time()?

(1) tick + tock return elapsed real time as well as estimated run time.
time only knows about estimated run time.
(2) tick + tock are not tied to output labels. time only knows about
time associated with an output label. When nolabels = true, time
doesn't know about anything.

Recently on the mailing list someone was trying to kludge together
a way to get timing info for partial results.
That was the inspiration for tick + tock.

If you have some alternative proposal I would be interested to hear it.

> Is it some perl idiosyncracy or something?

Perl is the source of much strangeness, but not this bit.

> Tick and tock are a strange interface to the clock.  Why not just
> expose the clock itself, and let the user/programmer do the
> subtraction?

get-internal-real-time acts differently in different Lisp systems
(because the initial time is one of those lovely implementation
dependencies in CL). tick + tock hide that. I don't like exposing
Lisp implmentation dependencies. But I guess it could be argued
that exposing get-internal-real-time is less ugly than tick + tock.

> The problem with tick and tock is that t0 is global, so you can't
> have nested calls; if you want partial times as well as full times,
> you have to accumulate them yourself, etc.

Yes, this is a problem.

> Also, why use rationals (with the cost of a GCD on every
> operation) rather than floats/bfloats?

get-internal-real-time and get-internal-run-time return integers.
Just carrying them over into Maxima preserves every bit,
which is in keeping with Maxima's general treatment of integers.

All the best,
Robert