1- use criterion :: { black_box , criterion_group , criterion_main , Criterion , BenchmarkId } ;
2- use codegraph :: { CodeGraph , NodeType , EdgeType } ;
1+ use codegraph :: { CodeGraph , EdgeType , NodeType } ;
2+ use criterion :: { black_box , criterion_group , criterion_main , BenchmarkId , Criterion } ;
33use tempfile:: TempDir ;
44
55fn bench_node_lookup ( c : & mut Criterion ) {
66 let mut group = c. benchmark_group ( "node_lookup" ) ;
7-
7+
88 for size in [ 1000 , 10_000 , 100_000 ] . iter ( ) {
99 let temp_dir = TempDir :: new ( ) . unwrap ( ) ;
1010 let db_path = temp_dir. path ( ) . join ( "bench.graph" ) ;
1111 let mut graph = CodeGraph :: open ( & db_path) . unwrap ( ) ;
12-
12+
1313 // Populate graph
1414 let node_ids: Vec < _ > = ( 0 ..* size)
1515 . map ( |i| {
16- graph. add_node ( NodeType :: Function , vec ! [
17- ( "name" . to_string( ) , format!( "func_{i}" ) . into( ) ) ,
18- ] . into_iter ( ) . collect ( ) ) . unwrap ( )
16+ graph
17+ . add_node (
18+ NodeType :: Function ,
19+ vec ! [ ( "name" . to_string( ) , format!( "func_{i}" ) . into( ) ) ]
20+ . into_iter ( )
21+ . collect ( ) ,
22+ )
23+ . unwrap ( )
1924 } )
2025 . collect ( ) ;
21-
26+
2227 group. bench_with_input ( BenchmarkId :: new ( "lookup" , size) , size, |b, _| {
2328 let node_id = node_ids[ node_ids. len ( ) / 2 ] ;
2429 b. iter ( || {
2530 black_box ( graph. get_node ( node_id) . unwrap ( ) ) ;
2631 } ) ;
2732 } ) ;
2833 }
29-
34+
3035 group. finish ( ) ;
3136}
3237
3338fn bench_neighbor_queries ( c : & mut Criterion ) {
3439 let mut group = c. benchmark_group ( "neighbor_queries" ) ;
35-
40+
3641 let temp_dir = TempDir :: new ( ) . unwrap ( ) ;
3742 let db_path = temp_dir. path ( ) . join ( "bench.graph" ) ;
3843 let mut graph = CodeGraph :: open ( & db_path) . unwrap ( ) ;
39-
44+
4045 // Create a node with varying numbers of neighbors
41- let center_node = graph. add_node ( NodeType :: Function , Default :: default ( ) ) . unwrap ( ) ;
42-
46+ let center_node = graph
47+ . add_node ( NodeType :: Function , Default :: default ( ) )
48+ . unwrap ( ) ;
49+
4350 for num_neighbors in [ 10 , 100 , 1000 ] . iter ( ) {
4451 for _i in 0 ..* num_neighbors {
45- let neighbor = graph. add_node ( NodeType :: Function , Default :: default ( ) ) . unwrap ( ) ;
46- graph. add_edge ( center_node, neighbor, EdgeType :: Calls , Default :: default ( ) ) . unwrap ( ) ;
52+ let neighbor = graph
53+ . add_node ( NodeType :: Function , Default :: default ( ) )
54+ . unwrap ( ) ;
55+ graph
56+ . add_edge ( center_node, neighbor, EdgeType :: Calls , Default :: default ( ) )
57+ . unwrap ( ) ;
4758 }
48-
49- group. bench_with_input ( BenchmarkId :: new ( "get_neighbors" , num_neighbors) , num_neighbors, |b, _| {
50- b. iter ( || {
51- black_box ( graph. get_neighbors ( center_node, codegraph:: Direction :: Outgoing ) . unwrap ( ) ) ;
52- } ) ;
53- } ) ;
59+
60+ group. bench_with_input (
61+ BenchmarkId :: new ( "get_neighbors" , num_neighbors) ,
62+ num_neighbors,
63+ |b, _| {
64+ b. iter ( || {
65+ black_box (
66+ graph
67+ . get_neighbors ( center_node, codegraph:: Direction :: Outgoing )
68+ . unwrap ( ) ,
69+ ) ;
70+ } ) ;
71+ } ,
72+ ) ;
5473 }
55-
74+
5675 group. finish ( ) ;
5776}
5877
5978fn bench_batch_insert ( c : & mut Criterion ) {
6079 let mut group = c. benchmark_group ( "batch_insert" ) ;
61-
80+
6281 for size in [ 100 , 1000 , 10_000 ] . iter ( ) {
6382 group. bench_with_input ( BenchmarkId :: new ( "nodes" , size) , size, |b, & size| {
6483 b. iter_with_setup (
@@ -70,18 +89,28 @@ fn bench_batch_insert(c: &mut Criterion) {
7089 } ,
7190 |( mut graph, _temp_dir) | {
7291 let nodes: Vec < _ > = ( 0 ..size)
73- . map ( |i| ( NodeType :: Function , vec ! [
74- ( "name" . to_string( ) , format!( "func_{i}" ) . into( ) ) ,
75- ] . into_iter ( ) . collect ( ) ) )
92+ . map ( |i| {
93+ (
94+ NodeType :: Function ,
95+ vec ! [ ( "name" . to_string( ) , format!( "func_{i}" ) . into( ) ) ]
96+ . into_iter ( )
97+ . collect ( ) ,
98+ )
99+ } )
76100 . collect ( ) ;
77101 black_box ( graph. add_nodes_batch ( nodes) . unwrap ( ) ) ;
78102 } ,
79103 ) ;
80104 } ) ;
81105 }
82-
106+
83107 group. finish ( ) ;
84108}
85109
86- criterion_group ! ( benches, bench_node_lookup, bench_neighbor_queries, bench_batch_insert) ;
110+ criterion_group ! (
111+ benches,
112+ bench_node_lookup,
113+ bench_neighbor_queries,
114+ bench_batch_insert
115+ ) ;
87116criterion_main ! ( benches) ;
0 commit comments