@@ -9,8 +9,12 @@ import collection.mutable
99
1010@ sharable object Stats {
1111
12+ // when false, Stats.record and Stats.trackTime are elided.
1213 inline val enabled = false
1314
15+ // set to true if only `trackTime` should be recorded by default
16+ inline val timerOnly = false
17+
1418 var monitored : Boolean = false
1519
1620 @ volatile private var stack : List [String ] = Nil
@@ -19,8 +23,8 @@ import collection.mutable
1923 override def default (key : String ): Int = 0
2024 }
2125
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)
2428
2529 def doRecord (fn : String , n : Int ) =
2630 if (monitored) {
@@ -38,7 +42,7 @@ import collection.mutable
3842 def doTrackTime [T ](fn : String )(op : => T ): T = {
3943 if (monitored) {
4044 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 )
4246 }
4347 else op
4448 }
0 commit comments