make the signal runtime global
This commit is contained in:
1 parent
4ac6aed482
commit
90e04edcdf
8 files changed
+409
-260
No files matched your search
@@ -1,23 +1,32 @@
|
||||
#![allow(unused)]
|
||||
use generational_box::{GenerationalBox, Owner, Store};
|
||||
use generational_box::*;
|
||||
|
||||
use criterion::{black_box, criterion_group, criterion_main, Criterion};
|
||||
|
||||
fn create(owner: &Owner) -> GenerationalBox<u32> {
|
||||
fn create<S: Storage<u32>>(owner: &Owner<S>) -> GenerationalBox<u32, S> {
|
||||
owner.insert(0)
|
||||
}
|
||||
|
||||
fn set_read(signal: GenerationalBox<u32>) -> u32 {
|
||||
fn set_read<S: Storage<u32>>(signal: GenerationalBox<u32, S>) -> u32 {
|
||||
signal.set(1);
|
||||
*signal.read()
|
||||
}
|
||||
|
||||
fn bench_fib(c: &mut Criterion) {
|
||||
let store = Store::default();
|
||||
let owner = store.owner();
|
||||
c.bench_function("create", |b| b.iter(|| create(black_box(&owner))));
|
||||
let signal = create(&owner);
|
||||
c.bench_function("set_read", |b| b.iter(|| set_read(black_box(signal))));
|
||||
{
|
||||
let owner = UnsyncStorage::owner();
|
||||
c.bench_function("create_unsync", |b| b.iter(|| create(black_box(&owner))));
|
||||
let signal = create(&owner);
|
||||
c.bench_function("set_read_unsync", |b| {
|
||||
b.iter(|| set_read(black_box(signal)))
|
||||
});
|
||||
}
|
||||
{
|
||||
let owner = SyncStorage::owner();
|
||||
c.bench_function("create_sync", |b| b.iter(|| create(black_box(&owner))));
|
||||
let signal = create(&owner);
|
||||
c.bench_function("set_read_sync", |b| b.iter(|| set_read(black_box(signal))));
|
||||
}
|
||||
}
|
||||
|
||||
criterion_group!(benches, bench_fib);
|
||||
|
||||
Reference in new issue
Block a user