Statsd cpu optimizaton
- cache the changed dimensions in condition tracker.
- avoid query condition wizard when unnecessary.
- avoid copy dimension keys in condition key generation.
Test: statsd tests.
BUG: b/73959649
Change-Id: I17d68e2a82643de3f421309841e75f84c6fd8f43
diff --git a/cmds/statsd/src/metrics/MetricProducer.h b/cmds/statsd/src/metrics/MetricProducer.h
index 05b7f87..ea45f43 100644
--- a/cmds/statsd/src/metrics/MetricProducer.h
+++ b/cmds/statsd/src/metrics/MetricProducer.h
@@ -50,7 +50,11 @@
mCondition(conditionIndex >= 0 ? false : true),
mConditionSliced(false),
mWizard(wizard),
- mConditionTrackerIndex(conditionIndex){};
+ mConditionTrackerIndex(conditionIndex),
+ mContainANYPositionInDimensionsInWhat(false),
+ mSameConditionDimensionsInTracker(false),
+ mHasLinksToAllConditionDimensionsInTracker(false) {
+ }
virtual ~MetricProducer(){};
@@ -219,6 +223,16 @@
vector<Matcher> mDimensionsInWhat; // The dimensions_in_what defined in statsd_config
vector<Matcher> mDimensionsInCondition; // The dimensions_in_condition defined in statsd_config
+ bool mContainANYPositionInDimensionsInWhat;
+
+ // True iff the condition dimensions equal to the sliced dimensions in the simple condition
+ // tracker. This field is always false for combinational condition trackers.
+ bool mSameConditionDimensionsInTracker;
+
+ // True iff the metric to condition links cover all dimension fields in the condition tracker.
+ // This field is always false for combinational condition trackers.
+ bool mHasLinksToAllConditionDimensionsInTracker;
+
std::vector<Metric2Condition> mMetric2ConditionLinks;
std::vector<sp<AnomalyTracker>> mAnomalyTrackers;