Generate build timing metrics to proto format file
Test: Dumped the text formated based metrics file to out dir,
and checked the file.
Bug: b/63815990
Change-Id: Iff476f72a0be74eb53b6b26ef468d11c0f24a404
diff --git a/ui/build/context.go b/ui/build/context.go
index c8b00c3..249e898 100644
--- a/ui/build/context.go
+++ b/ui/build/context.go
@@ -18,6 +18,8 @@
"context"
"android/soong/ui/logger"
+ "android/soong/ui/metrics"
+ "android/soong/ui/metrics/metrics_proto"
"android/soong/ui/status"
"android/soong/ui/terminal"
"android/soong/ui/tracer"
@@ -31,6 +33,8 @@
context.Context
logger.Logger
+ Metrics *metrics.Metrics
+
Writer terminal.Writer
Status *status.Status
@@ -39,9 +43,12 @@
}
// BeginTrace starts a new Duration Event.
-func (c ContextImpl) BeginTrace(name string) {
+func (c ContextImpl) BeginTrace(name, desc string) {
if c.Tracer != nil {
- c.Tracer.Begin(name, c.Thread)
+ c.Tracer.Begin(desc, c.Thread)
+ }
+ if c.Metrics != nil {
+ c.Metrics.TimeTracer.Begin(name, desc, c.Thread)
}
}
@@ -50,11 +57,23 @@
if c.Tracer != nil {
c.Tracer.End(c.Thread)
}
+ if c.Metrics != nil {
+ c.Metrics.SetTimeMetrics(c.Metrics.TimeTracer.End(c.Thread))
+ }
}
// CompleteTrace writes a trace with a beginning and end times.
-func (c ContextImpl) CompleteTrace(name string, begin, end uint64) {
+func (c ContextImpl) CompleteTrace(name, desc string, begin, end uint64) {
if c.Tracer != nil {
- c.Tracer.Complete(name, c.Thread, begin, end)
+ c.Tracer.Complete(desc, c.Thread, begin, end)
+ }
+ if c.Metrics != nil {
+ realTime := end - begin
+ c.Metrics.SetTimeMetrics(
+ metrics_proto.PerfInfo{
+ Desc: &desc,
+ Name: &name,
+ StartTime: &begin,
+ RealTime: &realTime})
}
}