1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
//! OxiGDAL Benchmarking and Profiling Suite
//!
//! `oxigdal-bench` provides comprehensive performance profiling and benchmarking
//! capabilities for the OxiGDAL geospatial library ecosystem.
//!
//! # Features
//!
//! - **CPU Profiling**: Profile CPU usage with flamegraph generation
//! - **Memory Profiling**: Track memory usage and detect leaks
//! - **Benchmark Scenarios**: Predefined scenarios for common operations
//! - **Performance Comparison**: Compare performance across implementations
//! - **Regression Detection**: Detect performance regressions against baselines
//! - **Report Generation**: Generate HTML, JSON, CSV, and Markdown reports
//!
//! # Example
//!
//! ```rust,no_run
//! use oxigdal_bench::profiler::{CpuProfiler, CpuProfilerConfig};
//! use oxigdal_bench::scenarios::{ScenarioBuilder, ScenarioRunner};
//! use oxigdal_bench::report::{BenchmarkReport, ReportFormat};
//!
//! // Create a custom benchmark scenario
//! let scenario = ScenarioBuilder::new("my_benchmark")
//! .description("Test raster processing")
//! .execute(|| {
//! // Your benchmark code here
//! Ok(())
//! })
//! .build();
//!
//! // Run the scenario
//! let mut runner = ScenarioRunner::new();
//! runner.add_scenario(scenario);
//! runner.run_all().expect("Failed to run benchmarks");
//!
//! // Generate a report
//! let mut report = BenchmarkReport::new("My Benchmark Report");
//! report.add_scenario_results(runner.results().to_vec());
//! report.generate("report.html", ReportFormat::Html)
//! .expect("Failed to generate report");
//! ```
//!
//! # Scenario Modules
//!
//! - `scenarios::raster`: Raster operation benchmarks (requires `raster` feature)
//! - `scenarios::vector`: Vector operation benchmarks (requires `vector` feature)
//! - [`scenarios::io`]: I/O performance benchmarks
//! - `scenarios::cloud`: Cloud storage benchmarks (requires `cloud` feature)
//! - `scenarios::ml`: ML inference benchmarks (requires `ml` feature)
//!
//! # Profiling
//!
//! The [`profiler`] module provides CPU and memory profiling utilities:
//!
//! ```rust,no_run
//! use oxigdal_bench::profiler::{profile_cpu, CpuProfilerConfig};
//!
//! let config = CpuProfilerConfig {
//! frequency: 100,
//! generate_flamegraph: true,
//! ..Default::default()
//! };
//!
//! let (result, report) = profile_cpu(|| {
//! // Code to profile
//! 42
//! }, config).expect("Profiling failed");
//!
//! println!("Profiling duration: {:?}", report.duration);
//! ```
// Re-export commonly used types
pub use ;
// Core modules
// Version information
/// The version of this crate.
pub const VERSION: &str = env!;
/// The name of this crate.
pub const CRATE_NAME: &str = env!;
// Prelude module for convenient imports