34 |
33 |
35 sealed case class Timing(elapsed: Time, cpu: Time, gc: Time) |
34 sealed case class Timing(elapsed: Time, cpu: Time, gc: Time) |
36 { |
35 { |
37 def is_relevant: Boolean = elapsed.is_relevant || cpu.is_relevant || gc.is_relevant |
36 def is_relevant: Boolean = elapsed.is_relevant || cpu.is_relevant || gc.is_relevant |
38 |
37 |
|
38 def resources: Time = cpu + gc |
|
39 |
|
40 def factor: Option[Double] = |
|
41 { |
|
42 val t1 = elapsed.seconds |
|
43 val t2 = resources.seconds |
|
44 if (t1 >= 3.0 && t2 >= 3.0) Some(t2 / t1) else None |
|
45 } |
|
46 |
39 def + (t: Timing): Timing = Timing(elapsed + t.elapsed, cpu + t.cpu, gc + t.gc) |
47 def + (t: Timing): Timing = Timing(elapsed + t.elapsed, cpu + t.cpu, gc + t.gc) |
40 |
48 |
41 def message: String = |
49 def message: String = |
42 elapsed.message + " elapsed time, " + cpu.message + " cpu time, " + gc.message + " GC time" |
50 elapsed.message + " elapsed time, " + cpu.message + " cpu time, " + gc.message + " GC time" |
43 |
51 |
44 def resources: Time = cpu + gc |
|
45 def message_resources: String = |
52 def message_resources: String = |
46 { |
53 { |
47 val resources = cpu + gc |
54 val factor_text = |
48 val t1 = elapsed.seconds |
55 factor match { |
49 val t2 = resources.seconds |
56 case Some(f) => String.format(Locale.ROOT, ", factor %.2f", new java.lang.Double(f)) |
50 val factor = |
57 case None => "" |
51 if (t1 >= 3.0 && t2 >= 3.0) |
58 } |
52 String.format(Locale.ROOT, ", factor %.2f", new java.lang.Double(t2 / t1)) |
59 if (resources.seconds >= 3.0) |
53 else "" |
60 elapsed.message_hms + " elapsed time, " + resources.message_hms + " cpu time" + factor_text |
54 if (t2 >= 3.0) |
|
55 elapsed.message_hms + " elapsed time, " + resources.message_hms + " cpu time" + factor |
|
56 else |
61 else |
57 elapsed.message_hms + " elapsed time" + factor |
62 elapsed.message_hms + " elapsed time" + factor_text |
58 } |
63 } |
59 |
64 |
60 override def toString: String = message |
65 override def toString: String = message |
61 } |
66 } |