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)14pub 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,18fn 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)29fn 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