pub fn run_self_check() -> Vec<String> {
let mut issues = Vec::new();
#[cfg(target_arch = "x86_64")]
if !std::is_x86_feature_detected!("avx2") {
issues.push("CPU 不支持 AVX2,图像处理性能可能下降".into());
}
if let Ok(cpus) = std::thread::available_parallelism() {
if cpus.get() < 2 {
issues.push(format!("可用核心数 {},建议至少 2 核", cpus));
}
}
issues
}
pub fn validate_pixel_buffer(buf: &[f32]) -> bool {
for &v in buf {
if !v.is_finite() {
return false;
}
}
true
}
pub fn validate_param_in_range(name: &str, value: f32, min: f32, max: f32) -> Option<String> {
if !value.is_finite() {
return Some(format!("{} = {} 不是有效浮点数", name, value));
}
if value < min || value > max {
return Some(format!("{} = {} 超出范围 [{}, {}]", name, value, min, max));
}
None
}