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
This commit is contained in:
Valentin Shergin
2020-08-01 21:31:40 -07:00
committed by Facebook GitHub Bot
parent 1ae76bf0dd
commit d5e244bcee
2 changed files with 30 additions and 0 deletions
@@ -7,6 +7,8 @@
#include "SurfaceTelemetry.h"
#include <algorithm>
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<MountingTelemetry> SurfaceTelemetry::getRecentCommitTelemetries()
const {
auto result = std::vector<MountingTelemetry>{};
result.reserve(recentCommitTelemetries_.size());
std::copy(
recentCommitTelemetries_.begin(),
recentCommitTelemetries_.end(),
std::back_inserter(result));
return result;
}
} // namespace react
} // namespace facebook
@@ -7,6 +7,9 @@
#pragma once
#include <better/small_vector.h>
#include <vector>
#include <react/renderer/mounting/MountingTelemetry.h>
#include <react/utils/Telemetry.h>
@@ -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<MountingTelemetry> 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<MountingTelemetry, kMaxNumberOfRecordedCommitTelemetries>
recentCommitTelemetries_{};
};
} // namespace react