| use criterion::*; |
| |
| use crate::benchmarks::compiled_protos::helloworld::{HelloReply, HelloRequest}; |
| use crate::benchmarks::utils; |
| |
| fn build_request(_name: String) { |
| let _request = tonic::Request::new(HelloRequest { name: _name }); |
| } |
| |
| fn build_response(_message: String) { |
| let _response = tonic::Request::new(HelloReply { message: _message }); |
| } |
| |
| pub fn bench_throughput(c: &mut Criterion) { |
| let mut group = c.benchmark_group("Request_Response"); |
| |
| let plot_config = PlotConfiguration::default().summary_scale(AxisScale::Logarithmic); |
| |
| group.plot_config(plot_config); |
| |
| let tiny_string = utils::generate_rnd_string(100).unwrap(); |
| let short_string = utils::generate_rnd_string(1_000).unwrap(); |
| let medium_string = utils::generate_rnd_string(10_000).unwrap(); |
| let big_string = utils::generate_rnd_string(100_000).unwrap(); |
| let huge_string = utils::generate_rnd_string(1_000_000).unwrap(); |
| let massive_string = utils::generate_rnd_string(10_000_000).unwrap(); |
| |
| for size in [ |
| tiny_string, |
| short_string, |
| medium_string, |
| big_string, |
| huge_string, |
| massive_string, |
| ] |
| .iter() |
| { |
| group.throughput(Throughput::Bytes(size.len() as u64)); |
| |
| group.bench_with_input(BenchmarkId::new("request", size.len()), size, |b, i| { |
| b.iter(|| build_request(i.to_string())) |
| }); |
| group.bench_with_input(BenchmarkId::new("response", size.len()), size, |b, i| { |
| b.iter(|| build_response(i.to_string())) |
| }); |
| } |
| group.finish(); |
| } |