From d5e244bcee7aa3f27508b69ae4dcb4e57eb89193 Mon Sep 17 00:00:00 2001 From: Valentin Shergin Date: Sat, 1 Aug 2020 21:29:29 -0700 Subject: [PATCH] Fabric: `SurfaceTelemetry` now contains/records recent transaction telemetry points Summary: Now SurfaceTelemetry records the last 16 full transaction telemetries. We will use it info to report to our trackers. Changelog: [Internal] Fabric-specific internal change. Reviewed By: mdvacca Differential Revision: D22887633 fbshipit-source-id: 0d88adff757e4bc5a701b51d4d06d85e1f51f10f --- .../renderer/mounting/SurfaceTelemetry.cpp | 20 +++++++++++++++++++ .../renderer/mounting/SurfaceTelemetry.h | 10 ++++++++++ 2 files changed, 30 insertions(+) diff --git a/ReactCommon/react/renderer/mounting/SurfaceTelemetry.cpp b/ReactCommon/react/renderer/mounting/SurfaceTelemetry.cpp index cbe68e0831a..ea4436edba7 100644 --- a/ReactCommon/react/renderer/mounting/SurfaceTelemetry.cpp +++ b/ReactCommon/react/renderer/mounting/SurfaceTelemetry.cpp @@ -7,6 +7,8 @@ #include "SurfaceTelemetry.h" +#include + namespace facebook { namespace react { @@ -20,6 +22,13 @@ void SurfaceTelemetry::incorporate( numberOfTransactions_++; numberOfMutations_ += numberOfMutations; + + while (recentCommitTelemetries_.size() >= + kMaxNumberOfRecordedCommitTelemetries) { + recentCommitTelemetries_.erase(recentCommitTelemetries_.begin()); + } + + recentCommitTelemetries_.push_back(telemetry); } TelemetryDuration SurfaceTelemetry::getLayoutTime() const { @@ -46,5 +55,16 @@ int SurfaceTelemetry::getNumberOfMutations() const { return numberOfMutations_; } +std::vector SurfaceTelemetry::getRecentCommitTelemetries() + const { + auto result = std::vector{}; + result.reserve(recentCommitTelemetries_.size()); + std::copy( + recentCommitTelemetries_.begin(), + recentCommitTelemetries_.end(), + std::back_inserter(result)); + return result; +} + } // namespace react } // namespace facebook diff --git a/ReactCommon/react/renderer/mounting/SurfaceTelemetry.h b/ReactCommon/react/renderer/mounting/SurfaceTelemetry.h index d10f7853a47..566b798f265 100644 --- a/ReactCommon/react/renderer/mounting/SurfaceTelemetry.h +++ b/ReactCommon/react/renderer/mounting/SurfaceTelemetry.h @@ -7,6 +7,9 @@ #pragma once +#include +#include + #include #include @@ -19,6 +22,8 @@ namespace react { */ class SurfaceTelemetry final { public: + constexpr static size_t kMaxNumberOfRecordedCommitTelemetries = 16; + /* * Metrics */ @@ -30,6 +35,8 @@ class SurfaceTelemetry final { int getNumberOfTransactions() const; int getNumberOfMutations() const; + std::vector getRecentCommitTelemetries() const; + /* * Incorporate data from given transaction telemetry into aggregated data * for the Surface. @@ -44,6 +51,9 @@ class SurfaceTelemetry final { int numberOfTransactions_{}; int numberOfMutations_{}; + + better::small_vector + recentCommitTelemetries_{}; }; } // namespace react