The CHRONOEND function ends a stopwatch with the given name previously started with CHRONOSTART. On top of recording the cumulative time between each start and end of the stopwatch, the number of calls of CHRONOSTART is recorded.

To recover the associated statistics, use CHRONOSTATS.

If calls of CHRONOSTART and CHRONOEND with the same name are nested, only the top level one is timed but each call to CHRONOSTART is counted. This allows the timing of recursive functions.

It is a good practice to put CHRONOEND in the finally clause of a TRY for the timing to work even if exceptions are thrown.

CHRONOEND is available since version 2.1.0.

See also



// Simple usage 'example' CHRONOSTART 40 2 + DROP 84 2 / DROP 'example' CHRONOEND CHRONOSTATS 'example' GET
// Safe usage of CHRONOEND with a TRY 'example' CHRONOSTART <% 40 2 + DROP 84 2 / DROP RETURN 'This won%27t be executed.' %> <% RETHROW %> <% 'example' CHRONOEND %> TRY CHRONOSTATS 'example' GET
// Nested calls 'example' CHRONOSTART 2 2 + DROP 'example' CHRONOSTART // Stopwatch already started but also increment call count 40 2 + DROP 84 2 / DROP 'example' CHRONOEND // Does not stop the example stopwatch 'example' CHRONOEND // Stops the example stopwatch CHRONOSTATS 'example' GET