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*, |
philipel
2017/08/29 11:25:49
Is this thread safe? ParseAlrSettingsFromFieldTria
ilnik
2017/08/29 11:48:15
Removed memoization.
|
+ rtc::Optional<AlrDetector::AlrExperimentSettings>> |
+ computed_results; |
+ |
+ auto it = computed_results.find(experiment_name); |
+ if (it != computed_results.end()) { |
philipel
2017/08/29 11:25:49
nit: remove {}
ilnik
2017/08/29 11:48:15
Removed now.
|
+ return it->second; |
+ } |
+ computed_results[experiment_name] = ret; |
+ |
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; |
} |