@@ -17,6 +17,7 @@ use prometheus::{Counter, CounterVec, IntCounter, Opts};
1717use std:: collections:: HashMap ;
1818use std:: sync:: { atomic, Arc } ;
1919use std:: thread;
20+ use rapidhash:: RapidBuildHasher ;
2021
2122fn bench_counter_with_label_values ( c : & mut Criterion ) {
2223 let counter = CounterVec :: new (
@@ -69,6 +70,78 @@ fn bench_counter_with_mapped_labels_fnv(c: &mut Criterion) {
6970 } ) ;
7071}
7172
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+
72145fn bench_counter_with_prepared_mapped_labels ( c : & mut Criterion ) {
73146 let counter = CounterVec :: new (
74147 Opts :: new ( "benchmark_counter" , "A counter to benchmark it." ) ,
@@ -216,6 +289,10 @@ criterion_group!(
216289 bench_counter_with_label_values_concurrent_write,
217290 bench_counter_with_mapped_labels,
218291 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,
219296 bench_counter_with_prepared_mapped_labels,
220297 bench_int_counter_no_labels,
221298 bench_int_counter_no_labels_concurrent_write,
0 commit comments