< Back to IRCAM Forum

Measuring evaluation time

Hello,

Is there a way to measure the evaluation duration in OM (from the moment when the v key is pressed until the ‘Ready’ message appears in the om Listener)?

best
rc

If you can add the 'time macro at the bottom, OM will print some stats:
Skjermbilde fra 2025-06-19 13-23-18

1 Like

great. thanks for the hint!!! :slight_smile:

in the OM Listener i get:

User time = 1.896
System time = 0.043
Elapsed time = 1.924
Allocation = 2251618792 bytes
0 Page faults
Calls to %EVAL 22044028
GC time = 0.162

I assume that the User System and Elapsed time are in seconds. What are the other stats? is there a way to make them ‘human’ readable?

Another thing: if I close and reopen the OM Listener the time macros stops giving stats. Instead it throws OM => nil

Is there a way to make it work again after reopening the listener?

best
rc

You may read the full CL docs here: Common Lisp HyperSpec (TM)

Has it the 'time macro returns the value you feed it with, only printing the stats as a side-effect (to the 'trace output-stream, whatever that may be set to).

Not sure why closing and opening the listener changes the behavior? Possibly a bug? E.g. that *trace-output* isnt (re)set to print its output to OMs listener?

thanks for your reply!
the hyperspecs says " The nature and format of the printed information is implementation-defined. Implementations are encouraged to provide such information as elapsed real time, machine run time, and storage management statistics."
What is the meaning of Allocation, Page faults, Calls to %EVAL and GC time and their values?

I don’t know if it’s a bug or feature but i would like to know how to get the time macros stats again after reopening the listener. Is it possible somehow?

best
rc

Description

The macro time can be used to determine execution times. The macro evaluates the form form and returns its values values. time also prints some timing and size data: user time, system time, elapsed time, and the total amount of heap space allocated in executing the form (in bytes).

The user time printed is the time used by LispWorks or any code that it calls in a dynamic library.

The system time printed is the time used in the operating system kernel when it is doing work on behalf of the LispWorks process.

The elapsed time printed is the time you could in principle measure with a stopwatch.

If LispWorks is 100% busy throughout the execution of the code, then user time + system time ~= elapsed time.

Each of the times is printed as:

  • secs.micros if less than 60 seconds.
  • hours:minutes:secs.micros if 60 seconds or more.

The timing and size data covers all stack groups, not just the one that invokes time.

1 Like

vs the trace-output isn’t updated to point to the new Listener pane after closing+opening, i beleive thats a bug. Thanks for catching that!

I’ll look into that, but unfortunately no time before end of next week, too busy using some nice sunny no-hack-weather atm :slight_smile:

thanks for the info!!!