@@ -9,8 +9,12 @@ import collection.mutable
9
9
10
10
@ sharable object Stats {
11
11
12
+ // when false, Stats.record and Stats.trackTime are elided.
12
13
inline val enabled = false
13
14
15
+ // set to true if only `trackTime` should be recorded by default
16
+ inline val timerOnly = false
17
+
14
18
var monitored : Boolean = false
15
19
16
20
@ volatile private var stack : List [String ] = Nil
@@ -19,8 +23,8 @@ import collection.mutable
19
23
override def default (key : String ): Int = 0
20
24
}
21
25
22
- inline def record (inline fn : String , inline n : Int = 1 ): Unit =
23
- if (enabled) doRecord(fn, n)
26
+ inline def record (inline fn : String , inline n : Int = 1 , inline skip : Boolean = timerOnly ): Unit =
27
+ if (enabled && ! skip ) doRecord(fn, n)
24
28
25
29
def doRecord (fn : String , n : Int ) =
26
30
if (monitored) {
@@ -38,7 +42,7 @@ import collection.mutable
38
42
def doTrackTime [T ](fn : String )(op : => T ): T = {
39
43
if (monitored) {
40
44
val start = System .nanoTime
41
- try op finally record(fn, ((System .nanoTime - start) / 1000 ).toInt)
45
+ try op finally record(fn, ((System .nanoTime - start) / 1000 ).toInt, skip = false )
42
46
}
43
47
else op
44
48
}
0 commit comments