| // Copyright 2022 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "base/cpu_reduction_experiment.h" |
| |
| #include "base/feature_list.h" |
| |
| namespace base { |
| |
| namespace { |
| |
| // This feature controls whether to enable a series of optimizations that |
| // reduces total CPU utilization of chrome. |
| constexpr Feature kReduceCpuUtilization{"ReduceCpuUtilization", |
| FEATURE_DISABLED_BY_DEFAULT}; |
| |
| // Cache of the state of the ReduceCpuUtilization feature. This avoids the need |
| // to constantly query its enabled state through FeatureList::IsEnabled(). |
| bool g_is_reduce_cpu_enabled = |
| kReduceCpuUtilization.default_state == FEATURE_ENABLED_BY_DEFAULT; |
| |
| } // namespace |
| |
| bool IsRunningCpuReductionExperiment() { |
| return g_is_reduce_cpu_enabled; |
| } |
| |
| void InitializeCpuReductionExperiment() { |
| g_is_reduce_cpu_enabled = FeatureList::IsEnabled(kReduceCpuUtilization); |
| } |
| |
| bool CpuReductionExperimentFilter::ShouldLogHistograms() { |
| if (!IsRunningCpuReductionExperiment()) |
| return true; |
| |
| return (++counter_ % 1000) == 1; |
| } |
| |
| } // namespace base |