Timer
structure
signature TIMER
structure Timer
:> TIMER
The Timer
structure provides facilities for measuring the passing of wall clock (real) time and the amount of time the running process has had the CPU (user time), has been active in the OS kernel (system time), and has spent on garbage collection (GC time).
type cpu_timer
type real_timer
val startCPUTimer : unit -> cpu_timer
val checkCPUTimer : cpu_timer
-> {usr : Time.time, sys : Time.time}
val checkGCTime : cpu_timer -> Time.time
val totalCPUTimer : unit -> cpu_timer
val startRealTimer : unit -> real_timer
val checkRealTimer : real_timer -> Time.time
val totalRealTimer : unit -> real_timer
type cpu_timer
type real_timer
real_timer
is the type of wall clock (real) timers, and cpu_timer
is the type of CPU timers.
val startCPUTimer : unit -> cpu_timer
checkCPUTimer ct
usr
) and system time (sys
) that have accumulated since the timer ct was started. Note that implementations should include any time spent in the garbage collector in the usr
time component.
checkGCTime ct
checkCPUTimer
to determine the non-GC user time as follows:
fun userTime ct = let val {usr, ...} = Timer.checkCPUTimer ct in Time.- (usr, Timer.checkGCTime ct) end
val totalCPUTimer : unit -> cpu_timer
val startRealTimer : unit -> real_timer
checkRealTimer rt
val totalRealTimer : unit -> real_timer
Time
The accuracy of the user, system, and GC times depends on the resolution of the system timer and the function call overhead in the OS interface. In particular, very small intervals might not be reported accurately.
On a Unix system, the user and system time reported by a CPU timer do not include the time spent in child processes.
Implementation note:
Some operating systems may lack the ability to measure CPU time consumption, in which case the real time should be returned instead.
Generated October 02, 2003
Last Modified October 31, 1997
Comments to John Reppy.
This document may be distributed freely over the internet as long as the copyright notice and license terms below are prominently displayed within every machine-readable copy.
Copyright © 2003 AT&T and Lucent Technologies. All rights reserved.
Permission is granted for internet users to make one paper copy for their
own personal use. Further hardcopy reproduction is strictly prohibited.
Permission to distribute the HTML document electronically on any medium
other than the internet must be requested from the copyright holders by
contacting the editors.
Printed versions of the SML Basis Manual are available from Cambridge
University Press.
To order, please visit
www.cup.org (North America) or
www.cup.cam.ac.uk (outside North America). |