| #![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); |
| } |
| }) |
| } |