You can call the primitive timing functions from Maxima directly as
?get\-internal\-run\-time();
I don't know if this is documented anywhere.
It is tricky to use in a function since you may want to time the
evaluation of arguments to the function, as you realize.
f(expression):= block ([start:?get\-internal\-run\-time()] , .... do
something here....
but expression has already been evaluated before start...
RJF