1 #![feature(test)] 2 3 extern crate petgraph; 4 extern crate test; 5 6 use petgraph::graph::Graph; 7 8 #[bench] bench_inser(b: &mut test::Bencher)9fn bench_inser(b: &mut test::Bencher) { 10 let mut og = Graph::new(); 11 let fst = og.add_node(0i32); 12 for x in 1..125 { 13 let n = og.add_node(x); 14 og.add_edge(fst, n, ()); 15 } 16 b.iter(|| og.add_node(1)) 17 } 18 19 #[bench] bench_add_edge(b: &mut test::Bencher)20fn bench_add_edge(b: &mut test::Bencher) { 21 let mut og = Graph::new(); 22 for _ in 0..100 { 23 og.add_node(()); 24 } 25 26 b.iter(|| { 27 for (a, b) in og.node_indices().zip(og.node_indices().skip(1)) { 28 og.add_edge(a, b, ()); 29 } 30 og.clear_edges(); 31 }) 32 } 33 34 #[bench] bench_remove(b: &mut test::Bencher)35fn bench_remove(b: &mut test::Bencher) { 36 // removal is very slow in a big graph. 37 // and this one doesn't even have many nodes. 38 let mut og = Graph::new(); 39 let fst = og.add_node(0i32); 40 let mut prev = fst; 41 for x in 1..1250 { 42 let n = og.add_node(x); 43 og.add_edge(prev, n, ()); 44 prev = n; 45 } 46 //println!("{}", og); 47 b.iter(|| { 48 for _ in 0..100 { 49 og.remove_node(fst); 50 } 51 }) 52 } 53