diff options
Diffstat (limited to 'vendor/petgraph-0.6.5/benches/graphmap.rs')
| -rw-r--r-- | vendor/petgraph-0.6.5/benches/graphmap.rs | 94 |
1 files changed, 0 insertions, 94 deletions
diff --git a/vendor/petgraph-0.6.5/benches/graphmap.rs b/vendor/petgraph-0.6.5/benches/graphmap.rs deleted file mode 100644 index d9f7c1a0..00000000 --- a/vendor/petgraph-0.6.5/benches/graphmap.rs +++ /dev/null @@ -1,94 +0,0 @@ -#![feature(test)] -#![cfg(feature = "rayon")] - -extern crate petgraph; -extern crate test; - -use petgraph::prelude::*; -use rayon::iter::ParallelIterator; -use std::hash::BuildHasher; -use test::Bencher; - -#[derive(Clone, Eq, Hash, Ord, PartialEq, PartialOrd)] -struct MyStruct { - u: String, - v: String, - w: String, -} - -fn test_nodes() -> Vec<MyStruct> { - let mut nodes = vec![]; - for i in 0..2500 { - nodes.push(MyStruct { - u: format!("X {}", i), - v: format!("Y {} Y", i), - w: format!("{}Z", i), - }); - } - - nodes -} - -fn test_graph<H: BuildHasher + Default>( - data: &Vec<MyStruct>, -) -> GraphMap<&MyStruct, usize, Directed, H> { - let mut gr = GraphMap::new(); - - for i in 0..2500 { - gr.add_node(&data[i]); - } - - for i in 0..1_000 { - for j in 999..2000 { - gr.add_edge(&data[i], &data[j], i * j); - } - } - - gr -} - -macro_rules! test_case_with_hasher { - ($name:ident, $hasher:path) => { - #[bench] - fn $name(bench: &mut Bencher) { - let data = test_nodes(); - let gr = test_graph::<$hasher>(&data); - bench.iter(|| { - let mut sources = vec![]; - for n in gr.nodes() { - for (src, _, e) in gr.edges_directed(n, Direction::Outgoing) { - if *e == 500 { - sources.push(src.clone()); - } - } - } - }); - } - }; -} - -test_case_with_hasher!(graphmap_serial_bench, std::hash::RandomState); -test_case_with_hasher!(graphmap_serial_bench_fxhash, fxhash::FxBuildHasher); -test_case_with_hasher!(graphmap_serial_bench_ahash, ahash::RandomState); - -#[bench] -fn graphmap_parallel_bench(bench: &mut Bencher) { - let data = test_nodes(); - let gr = test_graph::<std::hash::RandomState>(&data); - bench.iter(|| { - let sources: Vec<MyStruct> = gr - .par_nodes() - .map(|n| { - let mut sources = vec![]; - for (src, _, e) in gr.edges_directed(n, Direction::Outgoing) { - if *e == 500 { - sources.push(src.clone()); - } - } - - sources - }) - .flatten() - .collect(); - }); -} |
