graph_api_benches/
lib.rs

1pub mod construction;
2pub mod edge;
3pub mod generators;
4pub mod index;
5pub mod mutation;
6pub mod query;
7pub mod scale;
8pub mod traversal;
9pub mod vertex;
10
11use criterion::BenchmarkGroup;
12use graph_api_test::{Edge, Vertex};
13use std::time::Duration;
14
15/// Configures the default settings for benchmark groups
16pub fn configure_group(group: &mut BenchmarkGroup<criterion::measurement::WallTime>) {
17    group.measurement_time(Duration::from_secs(3));
18    group.sample_size(50);
19    group.warm_up_time(Duration::from_millis(500));
20}
21
22#[macro_export]
23macro_rules! bench_suite {
24    ($criterion:expr, $setup:expr) => {
25        let criterion: &mut criterion::Criterion = $criterion;
26
27        // Run vertex operation benchmarks
28        let mut vertex_group = criterion.benchmark_group("vertex_operations");
29        $crate::configure_group(&mut vertex_group);
30        $crate::vertex::run_benchmarks(&mut vertex_group, $setup);
31        vertex_group.finish();
32
33        // Run edge operation benchmarks
34        let mut edge_group = criterion.benchmark_group("edge_operations");
35        $crate::configure_group(&mut edge_group);
36        $crate::edge::run_benchmarks(&mut edge_group, $setup);
37        edge_group.finish();
38
39        // Run traversal operation benchmarks
40        let mut traversal_group = criterion.benchmark_group("traversal_operations");
41        $crate::configure_group(&mut traversal_group);
42        $crate::traversal::run_benchmarks(&mut traversal_group, $setup);
43        traversal_group.finish();
44
45        // Run query operation benchmarks
46        let mut query_group = criterion.benchmark_group("query_operations");
47        $crate::configure_group(&mut query_group);
48        $crate::query::run_benchmarks(&mut query_group, $setup);
49        query_group.finish();
50
51        // Run mutation operation benchmarks
52        let mut mutation_group = criterion.benchmark_group("mutation_operations");
53        $crate::configure_group(&mut mutation_group);
54        $crate::mutation::run_benchmarks(&mut mutation_group, $setup);
55        mutation_group.finish();
56
57        // Run construction benchmarks
58        let mut construction_group = criterion.benchmark_group("construction");
59        $crate::configure_group(&mut construction_group);
60        $crate::construction::run_benchmarks(&mut construction_group, $setup);
61        construction_group.finish();
62
63        // Run vertex label index benchmarks
64        let mut vertex_label_group = criterion.benchmark_group("vertex_label_index");
65        $crate::configure_group(&mut vertex_label_group);
66        $crate::index::run_vertex_label_benchmarks(&mut vertex_label_group, $setup);
67        vertex_label_group.finish();
68
69        // Run vertex hash index benchmarks
70        let mut vertex_hash_group = criterion.benchmark_group("vertex_hash_index");
71        $crate::configure_group(&mut vertex_hash_group);
72        $crate::index::run_vertex_hash_benchmarks(&mut vertex_hash_group, $setup);
73        vertex_hash_group.finish();
74
75        // Run vertex full-text index benchmarks
76        let mut vertex_full_text_group = criterion.benchmark_group("vertex_full_text_index");
77        $crate::configure_group(&mut vertex_full_text_group);
78        $crate::index::run_vertex_full_text_benchmarks(&mut vertex_full_text_group, $setup);
79        vertex_full_text_group.finish();
80
81        // Run vertex range index benchmarks
82        let mut vertex_range_group = criterion.benchmark_group("vertex_range_index");
83        $crate::configure_group(&mut vertex_range_group);
84        $crate::index::run_vertex_range_benchmarks(&mut vertex_range_group, $setup);
85        vertex_range_group.finish();
86
87        // Run edge label index benchmarks
88        let mut edge_label_group = criterion.benchmark_group("edge_label_index");
89        $crate::configure_group(&mut edge_label_group);
90        $crate::index::run_edge_label_benchmarks(&mut edge_label_group, $setup);
91        edge_label_group.finish();
92
93        // Run no-index benchmarks (baseline performance)
94        let mut no_index_group = criterion.benchmark_group("no_index");
95        $crate::configure_group(&mut no_index_group);
96        $crate::index::run_no_index_benchmarks(&mut no_index_group, $setup);
97        no_index_group.finish();
98
99        // Run scaling benchmarks
100        let mut scale_group = criterion.benchmark_group("scaling");
101        $crate::configure_group(&mut scale_group);
102        $crate::scale::run_benchmarks(&mut scale_group, $setup);
103        scale_group.finish();
104    };
105}