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)9 fn 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)20 fn 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)35 fn 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