File tree Expand file tree Collapse file tree 2 files changed +22
-4
lines changed Expand file tree Collapse file tree 2 files changed +22
-4
lines changed Original file line number Diff line number Diff line change @@ -14,12 +14,12 @@ See the License for the specific language governing permissions and
14
14
limitations under the License.
15
15
*/
16
16
17
- // Benchmarks are only meaningful and should only run with release builds.
18
- // Debug builds have different performance characteristics and would not provide
17
+ // Benchmarks are only meaningful and should only run with optimized builds.
18
+ // Unoptimized builds have different performance characteristics and would not provide
19
19
// useful benchmarking data for performance regression testing.
20
- #[ cfg( debug_assertions ) ]
20
+ #[ cfg( unoptimized_build ) ]
21
21
compile_error ! (
22
- "Benchmarks must be run with release builds only. Use `cargo bench --release` or `just bench`."
22
+ "Benchmarks must be run with optimized builds only. Use `cargo bench --release` or `just bench`."
23
23
) ;
24
24
25
25
use criterion:: { Criterion , criterion_group, criterion_main} ;
Original file line number Diff line number Diff line change @@ -85,6 +85,24 @@ fn main() -> Result<()> {
85
85
) ;
86
86
}
87
87
88
+ // Set a cfg flag based on optimization level for benchmarks
89
+ // Benchmarks should only run with optimized builds (opt-level 1+)
90
+ println ! ( "cargo:rustc-check-cfg=cfg(unoptimized_build)" ) ;
91
+ println ! ( "cargo:rustc-check-cfg=cfg(optimized_build)" ) ;
92
+
93
+ if let Ok ( opt_level) = std:: env:: var ( "OPT_LEVEL" ) {
94
+ if opt_level == "0" {
95
+ // Unoptimized build - benchmarks should not run
96
+ println ! ( "cargo:rustc-cfg=unoptimized_build" ) ;
97
+ } else {
98
+ // Optimized build - benchmarks can run
99
+ println ! ( "cargo:rustc-cfg=optimized_build" ) ;
100
+ }
101
+ } else {
102
+ // Fallback: if we can't determine opt level, assume unoptimized to be safe
103
+ println ! ( "cargo:rustc-cfg=unoptimized_build" ) ;
104
+ }
105
+
88
106
// Makes #[cfg(kvm)] == #[cfg(all(feature = "kvm", target_os = "linux"))]
89
107
// and #[cfg(mshv)] == #[cfg(all(any(feature = "mshv2", feature = "mshv3"), target_os = "linux"))].
90
108
// Essentially the kvm and mshv features are ignored on windows as long as you use #[cfg(kvm)] and not #[cfg(feature = "kvm")].
You can’t perform that action at this time.
0 commit comments