use serde_json::Value;
use crate::types::DiffResult;
mod impact;
mod methods;
mod precision;
mod types;
use impact::analyze_quantization_impact;
use methods::analyze_quantization_methods;
use precision::analyze_quantization_precision;
pub fn analyze_quantization_patterns(
old_model: &Value,
new_model: &Value,
results: &mut Vec<DiffResult>,
) {
if let (Value::Object(old_obj), Value::Object(new_obj)) = (old_model, new_model) {
if let Some((old_prec, new_prec)) = analyze_quantization_precision(old_obj, new_obj) {
results.push(DiffResult::ModelArchitectureChanged(
"quantization_precision".to_string(),
old_prec,
new_prec,
));
}
if let Some((old_method, new_method)) = analyze_quantization_methods(old_obj, new_obj) {
results.push(DiffResult::ModelArchitectureChanged(
"quantization_methods".to_string(),
old_method,
new_method,
));
}
if let Some((old_impact, new_impact)) = analyze_quantization_impact(old_obj, new_obj) {
results.push(DiffResult::ModelArchitectureChanged(
"quantization_impact".to_string(),
old_impact,
new_impact,
));
}
}
}