grpc
src
core
lib
event_engine
iomgr_engine
event_engine/iomgr_engine/time_averaged_stats.cc
Go to the documentation of this file.
1
/*
2
*
3
* Copyright 2015 gRPC authors.
4
*
5
* Licensed under the Apache License, Version 2.0 (the "License");
6
* you may not use this file except in compliance with the License.
7
* You may obtain a copy of the License at
8
*
9
* http://www.apache.org/licenses/LICENSE-2.0
10
*
11
* Unless required by applicable law or agreed to in writing, software
12
* distributed under the License is distributed on an "AS IS" BASIS,
13
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
* See the License for the specific language governing permissions and
15
* limitations under the License.
16
*
17
*/
18
19
#include <
grpc/support/port_platform.h
>
20
21
#include "
src/core/lib/event_engine/iomgr_engine/time_averaged_stats.h
"
22
23
namespace
grpc_event_engine
{
24
namespace
iomgr_engine {
25
26
TimeAveragedStats::TimeAveragedStats
(
double
init_avg,
double
regress_weight,
27
double
persistence_factor)
28
: init_avg_(init_avg),
29
regress_weight_(regress_weight),
30
persistence_factor_(persistence_factor) {}
31
32
void
TimeAveragedStats::AddSample
(
double
value
) {
33
batch_total_value_
+=
value
;
34
++
batch_num_samples_
;
35
}
36
37
double
TimeAveragedStats::UpdateAverage
() {
38
/* Start with the current batch: */
39
double
weighted_sum =
batch_total_value_
;
40
double
total_weight =
batch_num_samples_
;
41
if
(
regress_weight_
> 0) {
42
/* Add in the regression towards init_avg_: */
43
weighted_sum +=
regress_weight_
*
init_avg_
;
44
total_weight +=
regress_weight_
;
45
}
46
if
(
persistence_factor_
> 0) {
47
/* Add in the persistence: */
48
const
double
prev_sample_weight =
49
persistence_factor_
*
aggregate_total_weight_
;
50
weighted_sum += prev_sample_weight *
aggregate_weighted_avg_
;
51
total_weight += prev_sample_weight;
52
}
53
aggregate_weighted_avg_
=
54
(total_weight > 0) ? (weighted_sum / total_weight) :
init_avg_
;
55
aggregate_total_weight_
= total_weight;
56
batch_num_samples_
= 0;
57
batch_total_value_
= 0;
58
return
aggregate_weighted_avg_
;
59
}
60
61
}
// namespace iomgr_engine
62
}
// namespace grpc_event_engine
grpc_event_engine::iomgr_engine::TimeAveragedStats::AddSample
void AddSample(double value)
Definition:
event_engine/iomgr_engine/time_averaged_stats.cc:32
time_averaged_stats.h
grpc_event_engine::iomgr_engine::TimeAveragedStats::persistence_factor_
const double persistence_factor_
Definition:
event_engine/iomgr_engine/time_averaged_stats.h:63
grpc_event_engine::iomgr_engine::TimeAveragedStats::batch_num_samples_
double batch_num_samples_
Definition:
event_engine/iomgr_engine/time_averaged_stats.h:68
grpc_event_engine::iomgr_engine::TimeAveragedStats::regress_weight_
const double regress_weight_
Definition:
event_engine/iomgr_engine/time_averaged_stats.h:55
grpc_event_engine::iomgr_engine::TimeAveragedStats::aggregate_weighted_avg_
double aggregate_weighted_avg_
Definition:
event_engine/iomgr_engine/time_averaged_stats.h:75
grpc_event_engine::iomgr_engine::TimeAveragedStats::UpdateAverage
double UpdateAverage()
Definition:
event_engine/iomgr_engine/time_averaged_stats.cc:37
grpc_event_engine::iomgr_engine::TimeAveragedStats::aggregate_total_weight_
double aggregate_total_weight_
Definition:
event_engine/iomgr_engine/time_averaged_stats.h:72
value
const char * value
Definition:
hpack_parser_table.cc:165
grpc_event_engine::iomgr_engine::TimeAveragedStats::batch_total_value_
double batch_total_value_
Definition:
event_engine/iomgr_engine/time_averaged_stats.h:66
grpc_event_engine
Definition:
endpoint_config.h:24
grpc_event_engine::iomgr_engine::TimeAveragedStats::TimeAveragedStats
TimeAveragedStats(double init_avg, double regress_weight, double persistence_factor)
Definition:
event_engine/iomgr_engine/time_averaged_stats.cc:26
grpc_event_engine::iomgr_engine::TimeAveragedStats::init_avg_
const double init_avg_
Definition:
event_engine/iomgr_engine/time_averaged_stats.h:48
port_platform.h
grpc
Author(s):
autogenerated on Fri May 16 2025 03:00:36