| author | nipkow | 
| Mon, 02 Apr 2012 20:12:10 +0200 | |
| changeset 47302 | 70239da25ef6 | 
| parent 46768 | 46acd255810d | 
| child 47653 | 4605d4341b8b | 
| permissions | -rw-r--r-- | 
| 40393 | 1 | /* Title: Pure/General/timing.scala | 
| 46768 | 2 | Module: PIDE | 
| 40393 | 3 | Author: Makarius | 
| 4 | ||
| 5 | Basic support for time measurement. | |
| 6 | */ | |
| 7 | ||
| 8 | package isabelle | |
| 9 | ||
| 45664 | 10 | |
| 11 | object Timing | |
| 12 | {
 | |
| 13 | def timeit[A](message: String)(e: => A) = | |
| 14 |   {
 | |
| 15 | val start = java.lang.System.currentTimeMillis() | |
| 16 | val result = Exn.capture(e) | |
| 17 | val stop = java.lang.System.currentTimeMillis() | |
| 46768 | 18 | |
| 19 | val timing = Time.ms(stop - start) | |
| 20 | if (timing.is_relevant) | |
| 21 | java.lang.System.err.println( | |
| 22 | (if (message == null || message.isEmpty) "" else message + ": ") + | |
| 23 | timing.message + " elapsed time") | |
| 24 | ||
| 45664 | 25 | Exn.release(result) | 
| 26 | } | |
| 27 | } | |
| 28 | ||
| 40848 
8662b9b1f123
more abstract/uniform handling of time, preferring seconds as Double;
 wenzelm parents: 
40393diff
changeset | 29 | class Timing(val elapsed: Time, val cpu: Time, val gc: Time) | 
| 
8662b9b1f123
more abstract/uniform handling of time, preferring seconds as Double;
 wenzelm parents: 
40393diff
changeset | 30 | {
 | 
| 46768 | 31 | def is_relevant: Boolean = elapsed.is_relevant || cpu.is_relevant || gc.is_relevant | 
| 32 | ||
| 40848 
8662b9b1f123
more abstract/uniform handling of time, preferring seconds as Double;
 wenzelm parents: 
40393diff
changeset | 33 | def message: String = | 
| 
8662b9b1f123
more abstract/uniform handling of time, preferring seconds as Double;
 wenzelm parents: 
40393diff
changeset | 34 | elapsed.message + " elapsed time, " + cpu.message + " cpu time, " + gc.message + " GC time" | 
| 46768 | 35 | |
| 40848 
8662b9b1f123
more abstract/uniform handling of time, preferring seconds as Double;
 wenzelm parents: 
40393diff
changeset | 36 | override def toString = message | 
| 
8662b9b1f123
more abstract/uniform handling of time, preferring seconds as Double;
 wenzelm parents: 
40393diff
changeset | 37 | } | 
| 
8662b9b1f123
more abstract/uniform handling of time, preferring seconds as Double;
 wenzelm parents: 
40393diff
changeset | 38 |