1 #![feature(test)]
2
3 extern crate petgraph;
4 extern crate test;
5
6 use petgraph::prelude::*;
7 use test::Bencher;
8
9 #[allow(dead_code)]
10 mod common;
11 use common::*;
12
13 use petgraph::stable_graph::node_index;
14
15 #[bench]
full_edges_default(bench: &mut Bencher)16 fn full_edges_default(bench: &mut Bencher) {
17 let a = stable_digraph().full_a();
18 bench.iter(|| a.edges(node_index(1)).count())
19 }
20
21 #[bench]
full_edges_out(bench: &mut Bencher)22 fn full_edges_out(bench: &mut Bencher) {
23 let a = stable_digraph().full_a();
24 bench.iter(|| a.edges_directed(node_index(1), Outgoing).count())
25 }
26
27 #[bench]
full_edges_in(bench: &mut Bencher)28 fn full_edges_in(bench: &mut Bencher) {
29 let a = stable_digraph().full_a();
30 bench.iter(|| a.edges_directed(node_index(1), Incoming).count())
31 }
32
33 #[bench]
neighbors_default(bench: &mut Bencher)34 fn neighbors_default(bench: &mut Bencher) {
35 let a = stable_digraph().full_a();
36 bench.iter(|| a.neighbors(node_index(1)).count())
37 }
38
39 #[bench]
neighbors_out(bench: &mut Bencher)40 fn neighbors_out(bench: &mut Bencher) {
41 let a = stable_digraph().full_a();
42 bench.iter(|| a.neighbors_directed(node_index(1), Outgoing).count())
43 }
44
45 #[bench]
neighbors_in(bench: &mut Bencher)46 fn neighbors_in(bench: &mut Bencher) {
47 let a = stable_digraph().full_a();
48 bench.iter(|| a.neighbors_directed(node_index(1), Incoming).count())
49 }
50
51 #[bench]
sccs_kosaraju_stable_graph(bench: &mut Bencher)52 fn sccs_kosaraju_stable_graph(bench: &mut Bencher) {
53 let a = stable_digraph().bigger();
54 bench.iter(|| petgraph::algo::kosaraju_scc(&a));
55 }
56
57 #[bench]
sccs_kosaraju_graph(bench: &mut Bencher)58 fn sccs_kosaraju_graph(bench: &mut Bencher) {
59 let a = digraph().bigger();
60 bench.iter(|| petgraph::algo::kosaraju_scc(&a));
61 }
62
63 #[bench]
sccs_tarjan_stable_graph(bench: &mut Bencher)64 fn sccs_tarjan_stable_graph(bench: &mut Bencher) {
65 let a = stable_digraph().bigger();
66 bench.iter(|| petgraph::algo::tarjan_scc(&a));
67 }
68
69 #[bench]
sccs_tarjan_graph(bench: &mut Bencher)70 fn sccs_tarjan_graph(bench: &mut Bencher) {
71 let a = digraph().bigger();
72 bench.iter(|| petgraph::algo::tarjan_scc(&a));
73 }
74
75 #[bench]
stable_graph_map(bench: &mut Bencher)76 fn stable_graph_map(bench: &mut Bencher) {
77 let a = stable_digraph().bigger();
78 bench.iter(|| a.map(|i, _| i, |i, _| i));
79 }
80
81 #[bench]
graph_map(bench: &mut Bencher)82 fn graph_map(bench: &mut Bencher) {
83 let a = digraph().bigger();
84 bench.iter(|| a.map(|i, _| i, |i, _| i));
85 }
86
87 #[bench]
stable_graph_retain_nodes(bench: &mut Bencher)88 fn stable_graph_retain_nodes(bench: &mut Bencher) {
89 let mut a = stable_digraph().bigger();
90 bench.iter(|| a.retain_nodes(|_gr, i| (i.index() + 1) % 3700 != 0));
91 }
92
93 #[bench]
stable_graph_retain_edges(bench: &mut Bencher)94 fn stable_graph_retain_edges(bench: &mut Bencher) {
95 let mut a = stable_digraph().bigger();
96 bench.iter(|| a.retain_edges(|_gr, i| (i.index() + 1) % 3700 != 0));
97 }
98