53 lines
1.1 KiB
Rust
53 lines
1.1 KiB
Rust
#![feature(test)]
|
|
|
|
extern crate petgraph;
|
|
extern crate test;
|
|
|
|
use petgraph::graph::Graph;
|
|
|
|
#[bench]
|
|
fn bench_inser(b: &mut test::Bencher) {
|
|
let mut og = Graph::new();
|
|
let fst = og.add_node(0i32);
|
|
for x in 1..125 {
|
|
let n = og.add_node(x);
|
|
og.add_edge(fst, n, ());
|
|
}
|
|
b.iter(|| og.add_node(1))
|
|
}
|
|
|
|
#[bench]
|
|
fn bench_add_edge(b: &mut test::Bencher) {
|
|
let mut og = Graph::new();
|
|
for _ in 0..100 {
|
|
og.add_node(());
|
|
}
|
|
|
|
b.iter(|| {
|
|
for (a, b) in og.node_indices().zip(og.node_indices().skip(1)) {
|
|
og.add_edge(a, b, ());
|
|
}
|
|
og.clear_edges();
|
|
})
|
|
}
|
|
|
|
#[bench]
|
|
fn bench_remove(b: &mut test::Bencher) {
|
|
// removal is very slow in a big graph.
|
|
// and this one doesn't even have many nodes.
|
|
let mut og = Graph::new();
|
|
let fst = og.add_node(0i32);
|
|
let mut prev = fst;
|
|
for x in 1..1250 {
|
|
let n = og.add_node(x);
|
|
og.add_edge(prev, n, ());
|
|
prev = n;
|
|
}
|
|
//println!("{}", og);
|
|
b.iter(|| {
|
|
for _ in 0..100 {
|
|
og.remove_node(fst);
|
|
}
|
|
})
|
|
}
|