Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/trunk/src/compiler/PervEnv/Basis/internal-timer.sml
ViewVC logotype

Annotation of /sml/trunk/src/compiler/PervEnv/Basis/internal-timer.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 89 - (view) (download)

1 : monnier 89 (* internal-timer.sml
2 :     *
3 :     * COPYRIGHT (c) 1995 AT&T Bell Laboratories.
4 :     *
5 :     *)
6 :    
7 :     structure InternalTimer : sig
8 :    
9 :     include TIMER
10 :     val resetTimers : unit -> unit
11 :    
12 :     end = struct
13 :    
14 :     structure PB = PreBasis
15 :    
16 :     datatype cpu_timer = CPUT of {
17 :     usr : PB.time, sys : PB.time, gc : PB.time
18 :     }
19 :     datatype real_timer = RealT of PB.time
20 :    
21 :     local
22 :     val gettime' : unit -> (Int32.int * int * Int32.int * int * Int32.int * int) =
23 :     CInterface.c_function "SMLNJ-Time" "gettime"
24 :     fun mkTime (s, us) = PB.TIME{sec=Int32.toLarge s, usec=Int.toLarge us}
25 :     in
26 :     fun getTime () = let val (ts, tu, ss, su, gs, gu) = gettime' ()
27 :     in
28 :     { usr = mkTime(ts, tu), sys = mkTime(ss, su), gc = mkTime(gs, gu) }
29 :     end
30 :     end (* local *)
31 :    
32 :     fun startCPUTimer () = CPUT(getTime())
33 :     fun checkCPUTimer (CPUT{usr=u0, sys=s0, gc=g0}) = let
34 :     val {usr, sys, gc} = getTime()
35 :     in
36 :     { usr = Time.-(usr, u0),
37 :     sys = Time.-(sys, s0),
38 :     gc = Time.-(gc, g0)
39 :     }
40 :     end
41 :     val initCPUTime = ref(startCPUTimer ())
42 :     fun totalCPUTimer () = !initCPUTime
43 :    
44 :     fun startRealTimer () = RealT(Time.now())
45 :     fun checkRealTimer (RealT t) = Time.-(Time.now(), t)
46 :     val initRealTime = ref(startRealTimer ())
47 :     fun totalRealTimer () = !initRealTime
48 :    
49 :     fun resetTimers () = (
50 :     initCPUTime := startCPUTimer ();
51 :     initRealTime := startRealTimer ())
52 :    
53 :     end (* Timer *)
54 :    
55 :    
56 :     (*
57 :     * $Log: internal-timer.sml,v $
58 :     * Revision 1.1.1.1 1998/04/08 18:40:05 george
59 :     * Version 110.5
60 :     *
61 :     *)

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0