@@ -7,7 +7,7 @@ use std::{
7
7
use criterion:: { criterion_group, criterion_main, Criterion } ;
8
8
use tokio:: { io:: Interest , runtime:: Runtime } ;
9
9
10
- use quinn_udp:: { RecvMeta , Transmit , UdpSocketState } ;
10
+ use quinn_udp:: { RecvMeta , Transmit , UdpSocketState , BATCH_SIZE } ;
11
11
12
12
pub fn criterion_benchmark ( c : & mut Criterion ) {
13
13
const TOTAL_BYTES : usize = 10 * 1024 * 1024 ;
@@ -39,12 +39,17 @@ pub fn criterion_benchmark(c: &mut Criterion) {
39
39
continue ;
40
40
}
41
41
42
- permutations. push ( ( gso_enabled, gro_enabled) ) ;
42
+ for recvmmsg_enabled in [ false , true ] {
43
+ permutations. push ( ( gso_enabled, gro_enabled, recvmmsg_enabled) ) ;
44
+ }
43
45
}
44
46
}
45
47
46
- for ( gso_enabled, gro_enabled) in permutations {
47
- let mut group = c. benchmark_group ( format ! ( "gso_{}_gro_{}" , gso_enabled, gro_enabled) ) ;
48
+ for ( gso_enabled, gro_enabled, recvmmsg_enabled) in permutations {
49
+ let mut group = c. benchmark_group ( format ! (
50
+ "gso_{}_gro_{}_recvmmsg_{}" ,
51
+ gso_enabled, gro_enabled, recvmmsg_enabled
52
+ ) ) ;
48
53
group. throughput ( criterion:: Throughput :: Bytes ( TOTAL_BYTES as u64 ) ) ;
49
54
50
55
let gso_segments = if gso_enabled {
@@ -65,7 +70,7 @@ pub fn criterion_benchmark(c: &mut Criterion) {
65
70
} else {
66
71
1
67
72
} ;
68
- let batch_size = 1 ;
73
+ let batch_size = if recvmmsg_enabled { BATCH_SIZE } else { 1 } ;
69
74
70
75
group. bench_function ( "throughput" , |b| {
71
76
b. to_async ( & rt) . iter ( || async {
0 commit comments