(* Timer -- new basis 1995-03-20, 1995-09-14, 1995-11-06, 1997-03-07 *)(* Under DOS, real time and cpu time are the same *)local type tusage = { gcSec : int, gcUsec : int, sysSec : int, sysUsec : int, usrSec : int, usrUsec : int } prim_val getrutime_ : unit -> tusage = 1 "sml_getrutime" open Timein type cpu_timer = {usr : time, sys : time, gc : time}; type real_timer = time; fun startCPUTimer () = let val {gcSec, gcUsec, sysSec, sysUsec, usrSec, usrUsec} = getrutime_ () in {usr = fromSeconds usrSec + fromMicroseconds usrUsec, sys = fromSeconds sysSec + fromMicroseconds sysUsec, gc = fromSeconds gcSec + fromMicroseconds gcUsec} end fun checkCPUTimer {usr, sys, gc} = let val {gcSec, gcUsec, sysSec, sysUsec, usrSec, usrUsec} = getrutime_ () in {usr = fromSeconds usrSec + fromMicroseconds usrUsec - usr, sys = fromSeconds sysSec + fromMicroseconds sysUsec - sys, gc = fromSeconds gcSec + fromMicroseconds gcUsec - gc} end fun startRealTimer () = now (); fun checkRealTimer time1 = now () - time1;(* Removed 1995-11-03, added again 1997-03-07 *) val totalCPUTime = startCPUTimer (); val totalRealTime = startRealTimer (); fun totalCPUTimer _ = totalCPUTime; fun totalRealTimer _ = totalRealTime;end
(* Timer -- new basis 1995-03-20, 1995-09-14, 1995-11-06, 1997-03-07 *)
(* Under DOS, real time and cpu time are the same *)
local
type tusage = { gcSec : int, gcUsec : int,
sysSec : int, sysUsec : int,
usrSec : int, usrUsec : int }
prim_val getrutime_ : unit -> tusage = 1 "sml_getrutime"
open Time
in
type cpu_timer = {usr : time, sys : time, gc : time};
type real_timer = time;
fun startCPUTimer () =
let val {gcSec, gcUsec, sysSec, sysUsec, usrSec, usrUsec}
= getrutime_ ()
in {usr = fromSeconds usrSec + fromMicroseconds usrUsec,
sys = fromSeconds sysSec + fromMicroseconds sysUsec,
gc = fromSeconds gcSec + fromMicroseconds gcUsec}
end
fun checkCPUTimer {usr, sys, gc} =
let val {gcSec, gcUsec, sysSec, sysUsec, usrSec, usrUsec}
= getrutime_ ()
in {usr = fromSeconds usrSec + fromMicroseconds usrUsec - usr,
sys = fromSeconds sysSec + fromMicroseconds sysUsec - sys,
gc = fromSeconds gcSec + fromMicroseconds gcUsec - gc}
end
fun startRealTimer () = now ();
fun checkRealTimer time1 = now () - time1;
(* Removed 1995-11-03, added again 1997-03-07 *)
val totalCPUTime = startCPUTimer ();
val totalRealTime = startRealTimer ();
fun totalCPUTimer _ = totalCPUTime;
fun totalRealTimer _ = totalRealTime;
end