diff --git a/flow/instrumentation.cc b/flow/instrumentation.cc index 5b0f37264d7c3..ae9846c557f4c 100644 --- a/flow/instrumentation.cc +++ b/flow/instrumentation.cc @@ -63,6 +63,14 @@ fml::TimeDelta Stopwatch::MaxDelta() const { return max_delta; } +fml::TimeDelta Stopwatch::AverageDelta() const { + fml::TimeDelta sum; // default to 0 + for (size_t i = 0; i < kMaxSamples; i++) { + sum = sum + laps_[i]; + } + return sum / kMaxSamples; +} + // Initialize the SkSurface for drawing into. Draws the base background and any // timing data from before the initial Visualize() call. void Stopwatch::InitVisualizeSurface(const SkRect& rect) const { diff --git a/flow/instrumentation.h b/flow/instrumentation.h index eac76329ba577..a991af5b583da 100644 --- a/flow/instrumentation.h +++ b/flow/instrumentation.h @@ -14,6 +14,8 @@ namespace flow { +// DEPRECATED +// The frame per second FPS could be different than 60 (e.g., 120). static const double kOneFrameMS = 1e3 / 60.0; class Stopwatch { @@ -28,6 +30,8 @@ class Stopwatch { fml::TimeDelta MaxDelta() const; + fml::TimeDelta AverageDelta() const; + void InitVisualizeSurface(const SkRect& rect) const; void Visualize(SkCanvas& canvas, const SkRect& rect) const; diff --git a/flow/layers/performance_overlay_layer.cc b/flow/layers/performance_overlay_layer.cc index 1ec2eeaa3b9bd..d226567e487e2 100644 --- a/flow/layers/performance_overlay_layer.cc +++ b/flow/layers/performance_overlay_layer.cc @@ -40,19 +40,14 @@ void VisualizeStopWatch(SkCanvas& canvas, } if (show_labels) { - double ms_per_frame = stopwatch.MaxDelta().ToMillisecondsF(); - double fps; - if (ms_per_frame < kOneFrameMS) { - fps = 1e3 / kOneFrameMS; - } else { - fps = 1e3 / ms_per_frame; - } - + double max_ms_per_frame = stopwatch.MaxDelta().ToMillisecondsF(); + double average_ms_per_frame = stopwatch.AverageDelta().ToMillisecondsF(); std::stringstream stream; stream.setf(std::ios::fixed | std::ios::showpoint); stream << std::setprecision(1); - stream << label_prefix << " " << fps << " fps " << ms_per_frame - << "ms/frame"; + stream << label_prefix << " " + << "max " << max_ms_per_frame << " ms/frame, " + << "avg " << average_ms_per_frame << " ms/frame"; DrawStatisticsText(canvas, stream.str(), x + label_x, y + height + label_y); } }