 17ad855653
			
		
	
	
		17ad855653
		
			
		
	
	
	
	
		
			
			# Objective Many of our benchmarks use [`criterion::black_box()`](https://docs.rs/criterion/latest/criterion/fn.black_box.html), which is used to prevent the compiler from optimizing away computation that we're trying to time. This can be slow, though, because `criterion::black_box()` forces a point read each time it is called through [`ptr::road_volatile()`](https://doc.rust-lang.org/stable/std/ptr/fn.read_volatile.html). In Rust 1.66, the standard library introduced [`core::hint::black_box()`](https://doc.rust-lang.org/nightly/std/hint/fn.black_box.html) (and `std::hint::black_box()`). This is an intended replacement for `criterion`'s version that uses compiler intrinsics instead of volatile pointer reads, and thus has no runtime overhead. This increases benchmark accuracy, which is always nice 👍 Note that benchmarks may _appear_ to improve in performance after this change, but that's just because we are eliminating the pointer read overhead. ## Solution - Deny `criterion::black_box` in `clippy.toml`. - Fix all imports. ## Testing - `cargo clippy -p benches --benches`
		
			
				
	
	
		
			46 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			TOML
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			TOML
		
	
	
	
	
	
| doc-valid-idents = [
 | |
|   "GilRs",
 | |
|   "glTF",
 | |
|   "macOS",
 | |
|   "NVidia",
 | |
|   "OpenXR",
 | |
|   "sRGB",
 | |
|   "VSync",
 | |
|   "WebGL2",
 | |
|   "WebGPU",
 | |
|   "..",
 | |
| ]
 | |
| 
 | |
| check-private-items = true
 | |
| 
 | |
| disallowed-methods = [
 | |
|   { path = "f32::powi", reason = "use bevy_math::ops::FloatPow::squared, bevy_math::ops::FloatPow::cubed, or bevy_math::ops::powf instead for libm determinism" },
 | |
|   { path = "f32::log", reason = "use bevy_math::ops::ln, bevy_math::ops::log2, or bevy_math::ops::log10 instead for libm determinism" },
 | |
|   { path = "f32::abs_sub", reason = "deprecated and deeply confusing method" },
 | |
|   { path = "f32::powf", reason = "use bevy_math::ops::powf instead for libm determinism" },
 | |
|   { path = "f32::exp", reason = "use bevy_math::ops::exp instead for libm determinism" },
 | |
|   { path = "f32::exp2", reason = "use bevy_math::ops::exp2 instead for libm determinism" },
 | |
|   { path = "f32::ln", reason = "use bevy_math::ops::ln instead for libm determinism" },
 | |
|   { path = "f32::log2", reason = "use bevy_math::ops::log2 instead for libm determinism" },
 | |
|   { path = "f32::log10", reason = "use bevy_math::ops::log10 instead for libm determinism" },
 | |
|   { path = "f32::cbrt", reason = "use bevy_math::ops::cbrt instead for libm determinism" },
 | |
|   { path = "f32::hypot", reason = "use bevy_math::ops::hypot instead for libm determinism" },
 | |
|   { path = "f32::sin", reason = "use bevy_math::ops::sin instead for libm determinism" },
 | |
|   { path = "f32::cos", reason = "use bevy_math::ops::cos instead for libm determinism" },
 | |
|   { path = "f32::tan", reason = "use bevy_math::ops::tan instead for libm determinism" },
 | |
|   { path = "f32::asin", reason = "use bevy_math::ops::asin instead for libm determinism" },
 | |
|   { path = "f32::acos", reason = "use bevy_math::ops::acos instead for libm determinism" },
 | |
|   { path = "f32::atan", reason = "use bevy_math::ops::atan instead for libm determinism" },
 | |
|   { path = "f32::atan2", reason = "use bevy_math::ops::atan2 instead for libm determinism" },
 | |
|   { path = "f32::sin_cos", reason = "use bevy_math::ops::sin_cos instead for libm determinism" },
 | |
|   { path = "f32::exp_m1", reason = "use bevy_math::ops::exp_m1 instead for libm determinism" },
 | |
|   { path = "f32::ln_1p", reason = "use bevy_math::ops::ln_1p instead for libm determinism" },
 | |
|   { path = "f32::sinh", reason = "use bevy_math::ops::sinh instead for libm determinism" },
 | |
|   { path = "f32::cosh", reason = "use bevy_math::ops::cosh instead for libm determinism" },
 | |
|   { path = "f32::tanh", reason = "use bevy_math::ops::tanh instead for libm determinism" },
 | |
|   { path = "f32::asinh", reason = "use bevy_math::ops::asinh instead for libm determinism" },
 | |
|   { path = "f32::acosh", reason = "use bevy_math::ops::acosh instead for libm determinism" },
 | |
|   { path = "f32::atanh", reason = "use bevy_math::ops::atanh instead for libm determinism" },
 | |
|   { path = "criterion::black_box", reason = "use core::hint::black_box instead" },
 | |
| ]
 |