Index: webrtc/modules/pacing/alr_detector.cc |
diff --git a/webrtc/modules/pacing/alr_detector.cc b/webrtc/modules/pacing/alr_detector.cc |
index 993c6cd07edde5b87d2ea5f4b061dc5c183c5a40..194ddbccf83c305e221bae1771c2584b4cf64961 100644 |
--- a/webrtc/modules/pacing/alr_detector.cc |
+++ b/webrtc/modules/pacing/alr_detector.cc |
@@ -10,6 +10,7 @@ |
#include "webrtc/modules/pacing/alr_detector.h" |
+#include <map> |
#include <string> |
#include "webrtc/rtc_base/checks.h" |
@@ -81,6 +82,16 @@ AlrDetector::ParseAlrSettingsFromFieldTrial(const char* experiment_name) { |
rtc::Optional<AlrExperimentSettings> ret; |
std::string group_name = field_trial::FindFullName(experiment_name); |
+ static std::map<const char*, |
+ rtc::Optional<AlrDetector::AlrExperimentSettings>> |
+ computed_results; |
+ |
+ auto it = computed_results.find(experiment_name); |
+ if (it != computed_results.end()) { |
+ return it->second; |
+ } |
+ computed_results[experiment_name] = ret; |
sprang_webrtc
2017/08/24 09:13:16
Looks like you can drop this insertion?
ilnik
2017/08/25 12:35:07
No. Currently the function may exit below if it fa
|
+ |
const std::string kIgnoredSuffix = "_Dogfood"; |
if (group_name.rfind(kIgnoredSuffix) == |
group_name.length() - kIgnoredSuffix.length()) { |
@@ -91,11 +102,12 @@ AlrDetector::ParseAlrSettingsFromFieldTrial(const char* experiment_name) { |
return ret; |
AlrExperimentSettings settings; |
- if (sscanf(group_name.c_str(), "%f,%" PRId64 ",%d,%d,%d", |
+ if (sscanf(group_name.c_str(), "%f,%" PRId64 ",%d,%d,%d,%d", |
&settings.pacing_factor, &settings.max_paced_queue_time, |
&settings.alr_bandwidth_usage_percent, |
&settings.alr_start_budget_level_percent, |
- &settings.alr_stop_budget_level_percent) == 5) { |
+ &settings.alr_stop_budget_level_percent, |
+ &settings.group_id) == 6) { |
ret.emplace(settings); |
LOG(LS_INFO) << "Using ALR experiment settings: " |
"pacing factor: " |
@@ -106,11 +118,13 @@ AlrDetector::ParseAlrSettingsFromFieldTrial(const char* experiment_name) { |
<< ", ALR end budget level percent: " |
<< settings.alr_start_budget_level_percent |
<< ", ALR end budget level percent: " |
- << settings.alr_stop_budget_level_percent; |
+ << settings.alr_stop_budget_level_percent |
+ << ", ALR experiment group ID: " << settings.group_id; |
} else { |
LOG(LS_INFO) << "Failed to parse ALR experiment: " << experiment_name; |
} |
+ computed_results[experiment_name] = ret; |
return ret; |
} |