Skip to content

Commit c5959d7

Browse files
authored
enhancement(tag_cardinality_limit transform): Remove HashSet initialization with capacity to improve memory usage (#25480)
Remove HashSet initialization with capacity
1 parent f3828fe commit c5959d7

3 files changed

Lines changed: 9 additions & 6 deletions

File tree

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Reduce the memory usage of the `tag_cardinality_limit` transform when running in `exact` mode by allocating less unused memory on initialization.
2+
3+
authors: ArunPiduguDD

src/transforms/tag_cardinality_limit/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ impl TagCardinalityLimit {
213213
let metric_accepted_tags = self.accepted_tags.entry(metric_key_owned).or_default();
214214
let tag_value_set = metric_accepted_tags
215215
.entry_ref(key)
216-
.or_insert_with(|| AcceptedTagValueSet::new(config.value_limit, &config.mode));
216+
.or_insert_with(|| AcceptedTagValueSet::new(&config.mode));
217217

218218
if tag_value_set.contains(value) {
219219
// Tag value has already been accepted, nothing more to do.
@@ -300,7 +300,7 @@ impl TagCardinalityLimit {
300300
let metric_accepted_tags = self.accepted_tags.entry(metric_key_owned).or_default();
301301
metric_accepted_tags
302302
.entry_ref(key)
303-
.or_insert_with(|| AcceptedTagValueSet::new(config.value_limit, &config.mode))
303+
.or_insert_with(|| AcceptedTagValueSet::new(&config.mode))
304304
.insert(value.clone());
305305
false
306306
}

src/transforms/tag_cardinality_limit/tag_value_set.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,9 @@ impl fmt::Debug for TagValueSetStorage {
5959
}
6060

6161
impl AcceptedTagValueSet {
62-
pub fn new(value_limit: usize, mode: &Mode) -> Self {
62+
pub fn new(mode: &Mode) -> Self {
6363
let storage = match &mode {
64-
Mode::Exact => TagValueSetStorage::Set(HashSet::with_capacity(value_limit)),
64+
Mode::Exact => TagValueSetStorage::Set(HashSet::new()),
6565
Mode::Probabilistic(config) => {
6666
TagValueSetStorage::Bloom(BloomFilterStorage::new(config.cache_size_per_key))
6767
}
@@ -100,7 +100,7 @@ mod tests {
100100

101101
#[test]
102102
fn test_accepted_tag_value_set_exact() {
103-
let mut accepted_tag_value_set = AcceptedTagValueSet::new(2, &Mode::Exact);
103+
let mut accepted_tag_value_set = AcceptedTagValueSet::new(&Mode::Exact);
104104

105105
assert!(!accepted_tag_value_set.contains(&TagValueSet::from(["value1".to_string()])));
106106
assert_eq!(accepted_tag_value_set.len(), 0);
@@ -116,7 +116,7 @@ mod tests {
116116

117117
#[test]
118118
fn test_accepted_tag_value_set_probabilistic() {
119-
let mut accepted_tag_value_set = AcceptedTagValueSet::new(2, &Mode::Exact);
119+
let mut accepted_tag_value_set = AcceptedTagValueSet::new(&Mode::Exact);
120120

121121
assert!(!accepted_tag_value_set.contains(&TagValueSet::from(["value1".to_string()])));
122122
assert_eq!(accepted_tag_value_set.len(), 0);

0 commit comments

Comments
 (0)