1 // Copyright (C) 2020 Alibaba Cloud Computing. All rights reserved.
2 //
3 // SPDX-License-Identifier: Apache-2.0 OR BSD-3-Clause
4 #![cfg(feature = "backend-mmap")]
5 
6 pub use criterion::{black_box, Criterion};
7 
8 use vm_memory::bitmap::Bitmap;
9 use vm_memory::{GuestAddress, GuestMemory, GuestMemoryMmap};
10 
11 const REGION_SIZE: usize = 0x10_0000;
12 const REGIONS_COUNT: u64 = 256;
13 
benchmark_for_guest_memory(c: &mut Criterion)14 pub fn benchmark_for_guest_memory(c: &mut Criterion) {
15     benchmark_find_region(c);
16 }
17 
find_region<B>(mem: &GuestMemoryMmap<B>) where B: Bitmap + 'static,18 fn find_region<B>(mem: &GuestMemoryMmap<B>)
19 where
20     B: Bitmap + 'static,
21 {
22     for i in 0..REGIONS_COUNT {
23         let _ = mem
24             .find_region(black_box(GuestAddress(i * REGION_SIZE as u64)))
25             .unwrap();
26     }
27 }
28 
benchmark_find_region(c: &mut Criterion)29 fn benchmark_find_region(c: &mut Criterion) {
30     let memory = super::create_guest_memory_mmap(REGION_SIZE, REGIONS_COUNT);
31 
32     c.bench_function("find_region", |b| {
33         b.iter(|| find_region(black_box(&memory)))
34     });
35 }
36