From f8f6785eb786e945132d37398330808eb7c717f1 Mon Sep 17 00:00:00 2001 From: Mauro Lacy Date: Tue, 12 Jan 2021 16:13:50 +0100 Subject: [PATCH] Add pinned memory cache benchmark --- packages/vm/benches/main.rs | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/packages/vm/benches/main.rs b/packages/vm/benches/main.rs index 179fd518d5..0f0b703982 100644 --- a/packages/vm/benches/main.rs +++ b/packages/vm/benches/main.rs @@ -115,6 +115,7 @@ fn bench_cache(c: &mut Criterion) { let _ = cache .get_instance(&checksum, mock_backend(&[]), DEFAULT_INSTANCE_OPTIONS) .unwrap(); + assert_eq!(cache.stats().hits_pinned_memory_cache, 0); assert_eq!(cache.stats().hits_memory_cache, 0); assert!(cache.stats().hits_fs_cache >= 1); assert_eq!(cache.stats().misses, 0); @@ -135,8 +136,33 @@ fn bench_cache(c: &mut Criterion) { let _ = cache .get_instance(&checksum, backend, DEFAULT_INSTANCE_OPTIONS) .unwrap(); - assert_eq!(cache.stats().hits_fs_cache, 1); + assert_eq!(cache.stats().hits_pinned_memory_cache, 0); assert!(cache.stats().hits_memory_cache >= 1); + assert_eq!(cache.stats().hits_fs_cache, 1); + assert_eq!(cache.stats().misses, 0); + }); + }); + + group.bench_function("instantiate from pinned memory", |b| { + let checksum = Checksum::generate(CONTRACT); + let mut cache: Cache = + unsafe { Cache::new(options.clone()).unwrap() }; + // Load into memory + cache + .get_instance(&checksum, mock_backend(&[]), DEFAULT_INSTANCE_OPTIONS) + .unwrap(); + + // Pin + cache.pin(&checksum).unwrap(); + + b.iter(|| { + let backend = mock_backend(&[]); + let _ = cache + .get_instance(&checksum, backend, DEFAULT_INSTANCE_OPTIONS) + .unwrap(); + assert_eq!(cache.stats().hits_memory_cache, 1); + assert!(cache.stats().hits_pinned_memory_cache >= 1); + assert_eq!(cache.stats().hits_fs_cache, 1); assert_eq!(cache.stats().misses, 0); }); });