Skip to content

Commit

Permalink
Now List abstracts from the pointer type (Rc/Arc).
Browse files Browse the repository at this point in the history
  • Loading branch information
orium committed Mar 5, 2019
1 parent 032217c commit 458ca73
Show file tree
Hide file tree
Showing 12 changed files with 475 additions and 144 deletions.
6 changes: 6 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ travis-ci = { repository = "orium/rpds", branch = "master" }
codecov = { repository = "orium/rpds", branch = "master", service = "github" }

[dependencies]
archery = "0.2"
serde = { version = "1", optional = true }

[dev-dependencies]
Expand All @@ -47,6 +48,7 @@ rand = "0.6"
# needed to test serde
bincode = "1"
pretty_assertions = "0.6"
static_assertions = "0.3"

[features]
fatal-warnings = []
Expand All @@ -62,6 +64,10 @@ harness = false
name = "rpds_list"
harness = false

[[bench]]
name = "rpds_list_sync"
harness = false

[[bench]]
name = "std_vec"
harness = false
Expand Down
2 changes: 1 addition & 1 deletion benches/rpds_list.rs
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,7 @@ fn rpds_list_reverse_mut(c: &mut Criterion) {

fn rpds_list_iterate(c: &mut Criterion) {
let limit = 10_000;
let mut list: List<usize> = List::new();
let mut list = List::new();

for i in 0..limit {
list.push_front_mut(i);
Expand Down
170 changes: 170 additions & 0 deletions benches/rpds_list_sync.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/

#![cfg_attr(feature = "fatal-warnings", deny(warnings))]

use criterion::{black_box, criterion_group, criterion_main, Criterion};
use rpds::ListSync;

fn rpds_list_sync_push_front(c: &mut Criterion) {
let limit = 10_000;

c.bench_function("rpds list sync push front", move |b| {
b.iter(|| {
let mut list: ListSync<usize> = ListSync::new_sync();

for i in 0..limit {
list = list.push_front(i);
}

list
})
});
}

fn rpds_list_sync_push_front_mut(c: &mut Criterion) {
let limit = 10_000;

c.bench_function("rpds list sync push front mut", move |b| {
b.iter(|| {
let mut list: ListSync<usize> = ListSync::new_sync();

for i in 0..limit {
list.push_front_mut(i);
}

list
})
});
}

fn rpds_list_sync_drop_first(c: &mut Criterion) {
let limit = 10_000;

c.bench_function("rpds list sync drop first", move |b| {
b.iter_with_setup(
|| {
let mut list: ListSync<usize> = ListSync::new_sync();

for i in 0..limit {
list.push_front_mut(i);
}

list
},
|mut list| {
for _ in 0..limit {
list = list.drop_first().unwrap();
}

list
},
);
});
}

fn rpds_list_sync_drop_first_mut(c: &mut Criterion) {
let limit = 10_000;

c.bench_function("rpds list sync drop first mut", move |b| {
b.iter_with_setup(
|| {
let mut list: ListSync<usize> = ListSync::new_sync();

for i in 0..limit {
list.push_front_mut(i);
}

list
},
|mut list| {
for _ in 0..limit {
list.drop_first_mut();
}

list
},
);
});
}

fn rpds_list_sync_reverse(c: &mut Criterion) {
let limit = 1_000;

c.bench_function("rpds list sync reverse", move |b| {
b.iter_with_setup(
|| {
let mut list: ListSync<usize> = ListSync::new_sync();

for i in 0..limit {
list.push_front_mut(i);
}

list
},
|mut list| {
for _ in 0..limit {
list = list.reverse();
}

list
},
);
});
}

fn rpds_list_sync_reverse_mut(c: &mut Criterion) {
let limit = 1_000;

c.bench_function("rpds list sync reverse mut", move |b| {
b.iter_with_setup(
|| {
let mut list: ListSync<usize> = ListSync::new_sync();

for i in 0..limit {
list.push_front_mut(i);
}

list
},
|mut list| {
for _ in 0..limit {
list.reverse_mut();
}

list
},
);
});
}

fn rpds_list_sync_iterate(c: &mut Criterion) {
let limit = 10_000;
let mut list: ListSync<usize> = ListSync::new_sync();

for i in 0..limit {
list.push_front_mut(i);
}

c.bench_function("rpds list sync iterate", move |b| {
b.iter(|| {
for i in list.iter() {
black_box(i);
}
})
});
}

criterion_group!(
benches,
rpds_list_sync_push_front,
rpds_list_sync_push_front_mut,
rpds_list_sync_drop_first,
rpds_list_sync_drop_first_mut,
rpds_list_sync_reverse,
rpds_list_sync_reverse_mut,
rpds_list_sync_iterate
);
criterion_main!(benches);
1 change: 1 addition & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,7 @@ pub mod stack;
pub mod vector;

pub use crate::list::List;
pub use crate::list::ListSync;
pub use crate::map::hash_trie_map::HashTrieMap;
pub use crate::map::red_black_tree_map::RedBlackTreeMap;
pub use crate::queue::Queue;
Expand Down
Loading

0 comments on commit 458ca73

Please sign in to comment.