// 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. #ifndef BASE_CPU_REDUCTION_EXPERIMENT_H_ #define BASE_CPU_REDUCTION_EXPERIMENT_H_ #include "base/base_export.h" namespace base { // Returns whether the cpu cycle reduction experiment is running. // The goal of this experiment is to better understand the relationship between // total CPU cycles used across the fleet and top-line chrome metrics. BASE_EXPORT bool IsRunningCpuReductionExperiment(); // Must be called after FeatureList initialization and while chrome is still // single-threaded. BASE_EXPORT void InitializeCpuReductionExperiment(); // This is a helper class to reduce common duplicate code. If the CPU reduction // experiment is running, then ShouldLogHistograms returns true on every 1000th // call. Otherwise it always returns true. class BASE_EXPORT CpuReductionExperimentFilter { public: // Returns true on the first call, and every 1000th call after that. bool ShouldLogHistograms(); private: int counter_ = 0; }; } // namespace base #endif // BASE_CPU_REDUCTION_EXPERIMENT_H_