@@ -17,6 +17,7 @@ use prometheus::{Counter, CounterVec, IntCounter, Opts};
17
17
use std:: collections:: HashMap ;
18
18
use std:: sync:: { atomic, Arc } ;
19
19
use std:: thread;
20
+ use rapidhash:: RapidBuildHasher ;
20
21
21
22
fn bench_counter_with_label_values ( c : & mut Criterion ) {
22
23
let counter = CounterVec :: new (
@@ -69,6 +70,78 @@ fn bench_counter_with_mapped_labels_fnv(c: &mut Criterion) {
69
70
} ) ;
70
71
}
71
72
73
+ fn bench_counter_with_mapped_labels_rapidhash ( c : & mut Criterion ) {
74
+ let counter = CounterVec :: new (
75
+ Opts :: new ( "benchmark_counter" , "A counter to benchmark it." ) ,
76
+ & [ "one" , "two" , "three" ] ,
77
+ )
78
+ . unwrap ( ) ;
79
+
80
+ c. bench_function ( "counter_with_mapped_labels_rapidhash" , |b| {
81
+ b. iter ( || {
82
+ let mut labels = HashMap :: with_capacity_and_hasher ( 3 , RapidBuildHasher :: default ( ) ) ;
83
+ labels. insert ( "two" , "zwei" ) ;
84
+ labels. insert ( "one" , "eins" ) ;
85
+ labels. insert ( "three" , "drei" ) ;
86
+ counter. with ( & black_box ( labels) ) . inc ( ) ;
87
+ } )
88
+ } ) ;
89
+ }
90
+
91
+ fn bench_counter_with_mapped_longer_labels ( c : & mut Criterion ) {
92
+ let counter = CounterVec :: new (
93
+ Opts :: new ( "benchmark_counter" , "A counter to benchmark it." ) ,
94
+ & [ "longer_field_number_one" , "longer_field_number_two" , "longer_field_number_three" ] ,
95
+ )
96
+ . unwrap ( ) ;
97
+
98
+ c. bench_function ( "counter_with_mapped_longer_labels" , |b| {
99
+ b. iter ( || {
100
+ let mut labels = HashMap :: with_capacity ( 3 ) ;
101
+ labels. insert ( "longer_field_number_two" , "longer_field_number_zwei" ) ;
102
+ labels. insert ( "longer_field_number_one" , "longer_field_number_eins" ) ;
103
+ labels. insert ( "longer_field_number_three" , "longer_field_number_drei" ) ;
104
+ counter. with ( & black_box ( labels) ) . inc ( ) ;
105
+ } )
106
+ } ) ;
107
+ }
108
+
109
+ fn bench_counter_with_mapped_longer_labels_fnv ( c : & mut Criterion ) {
110
+ let counter = CounterVec :: new (
111
+ Opts :: new ( "benchmark_counter" , "A counter to benchmark it." ) ,
112
+ & [ "longer_field_number_one" , "longer_field_number_two" , "longer_field_number_three" ] ,
113
+ )
114
+ . unwrap ( ) ;
115
+
116
+ c. bench_function ( "counter_with_mapped_longer_labels_fnv" , |b| {
117
+ b. iter ( || {
118
+ let mut labels = HashMap :: with_capacity_and_hasher ( 3 , FnvBuildHasher :: default ( ) ) ;
119
+ labels. insert ( "longer_field_number_two" , "longer_field_number_zwei" ) ;
120
+ labels. insert ( "longer_field_number_one" , "longer_field_number_eins" ) ;
121
+ labels. insert ( "longer_field_number_three" , "longer_field_number_drei" ) ;
122
+ counter. with ( & black_box ( labels) ) . inc ( ) ;
123
+ } )
124
+ } ) ;
125
+ }
126
+
127
+ fn bench_counter_with_mapped_longer_labels_rapidhash ( c : & mut Criterion ) {
128
+ let counter = CounterVec :: new (
129
+ Opts :: new ( "benchmark_counter" , "A counter to benchmark it." ) ,
130
+ & [ "longer_field_number_one" , "longer_field_number_two" , "longer_field_number_three" ] ,
131
+ )
132
+ . unwrap ( ) ;
133
+
134
+ c. bench_function ( "counter_with_mapped_longer_labels_rapidhash" , |b| {
135
+ b. iter ( || {
136
+ let mut labels = HashMap :: with_capacity_and_hasher ( 3 , RapidBuildHasher :: default ( ) ) ;
137
+ labels. insert ( "longer_field_number_two" , "longer_field_number_zwei" ) ;
138
+ labels. insert ( "longer_field_number_one" , "longer_field_number_eins" ) ;
139
+ labels. insert ( "longer_field_number_three" , "longer_field_number_drei" ) ;
140
+ counter. with ( & black_box ( labels) ) . inc ( ) ;
141
+ } )
142
+ } ) ;
143
+ }
144
+
72
145
fn bench_counter_with_prepared_mapped_labels ( c : & mut Criterion ) {
73
146
let counter = CounterVec :: new (
74
147
Opts :: new ( "benchmark_counter" , "A counter to benchmark it." ) ,
@@ -216,6 +289,10 @@ criterion_group!(
216
289
bench_counter_with_label_values_concurrent_write,
217
290
bench_counter_with_mapped_labels,
218
291
bench_counter_with_mapped_labels_fnv,
292
+ bench_counter_with_mapped_labels_rapidhash,
293
+ bench_counter_with_mapped_longer_labels,
294
+ bench_counter_with_mapped_longer_labels_fnv,
295
+ bench_counter_with_mapped_longer_labels_rapidhash,
219
296
bench_counter_with_prepared_mapped_labels,
220
297
bench_int_counter_no_labels,
221
298
bench_int_counter_no_labels_concurrent_write,
0 commit comments