src/Pure/library.ML
changeset 8999 ad8260dc6e4a
parent 8806 a202293db3f6
child 9118 62367f8fef02
equal deleted inserted replaced
8998:56c44eee46ad 8999:ad8260dc6e4a
   242 
   242 
   243   (*timing*)
   243   (*timing*)
   244   val cond_timeit: bool -> (unit -> 'a) -> 'a
   244   val cond_timeit: bool -> (unit -> 'a) -> 'a
   245   val timeit: (unit -> 'a) -> 'a
   245   val timeit: (unit -> 'a) -> 'a
   246   val timeap: ('a -> 'b) -> 'a -> 'b
   246   val timeap: ('a -> 'b) -> 'a -> 'b
       
   247   val timing: bool ref
   247 
   248 
   248   (*misc*)
   249   (*misc*)
   249   val make_keylist: ('a -> 'b) -> 'a list -> ('a * 'b) list
   250   val make_keylist: ('a -> 'b) -> 'a list -> ('a * 'b) list
   250   val keyfilter: ('a * ''b) list -> ''b -> 'a list
   251   val keyfilter: ('a * ''b) list -> ''b -> 'a list
   251   val partition: ('a -> bool) -> 'a list -> 'a list * 'a list
   252   val partition: ('a -> bool) -> 'a list -> 'a list * 'a list
  1176 
  1177 
  1177 
  1178 
  1178 (** timing **)
  1179 (** timing **)
  1179 
  1180 
  1180 (*a conditional timing function: applies f to () and, if the flag is true,
  1181 (*a conditional timing function: applies f to () and, if the flag is true,
  1181   prints its runtime*)
  1182   prints its runtime on warning channel*)
  1182 fun cond_timeit flag f =
  1183 fun cond_timeit flag f =
  1183   if flag then
  1184   if flag then
  1184     let val start = startTiming()
  1185     let val start = startTiming()
  1185         val result = f ()
  1186         val result = f ()
  1186     in
  1187     in warning (endTiming start);  result end
  1187         writeln (endTiming start);  result
       
  1188     end
       
  1189   else f ();
  1188   else f ();
  1190 
  1189 
  1191 (*unconditional timing function*)
  1190 (*unconditional timing function*)
  1192 fun timeit x = cond_timeit true x;
  1191 fun timeit x = cond_timeit true x;
  1193 
  1192 
  1194 (*timed application function*)
  1193 (*timed application function*)
  1195 fun timeap f x = timeit (fn () => f x);
  1194 fun timeap f x = timeit (fn () => f x);
       
  1195 
       
  1196 (*global timing mode*)
       
  1197 val timing = ref false;
  1196 
  1198 
  1197 
  1199 
  1198 
  1200 
  1199 (** misc **)
  1201 (** misc **)
  1200 
  1202