Squashed 'vendor/ruvector/' content from commit b64c2172
git-subtree-dir: vendor/ruvector git-subtree-split: b64c21726f2bb37286d9ee36a7869fef60cc6900
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
use criterion::{black_box, criterion_group, criterion_main, Criterion};
|
||||
use ruvector_tiny_dancer_core::{
|
||||
feature_engineering::{FeatureConfig, FeatureEngineer},
|
||||
Candidate,
|
||||
};
|
||||
use std::collections::HashMap;
|
||||
|
||||
fn bench_cosine_similarity(c: &mut Criterion) {
|
||||
let engineer = FeatureEngineer::new();
|
||||
|
||||
c.bench_function("cosine_similarity_384d", |b| {
|
||||
let a = vec![0.5; 384];
|
||||
let b = vec![0.4; 384];
|
||||
|
||||
let candidate = Candidate {
|
||||
id: "test".to_string(),
|
||||
embedding: b.clone(),
|
||||
metadata: HashMap::new(),
|
||||
created_at: chrono::Utc::now().timestamp(),
|
||||
access_count: 10,
|
||||
success_rate: 0.9,
|
||||
};
|
||||
|
||||
b.iter(|| {
|
||||
engineer
|
||||
.extract_features(black_box(&a), black_box(&candidate), None)
|
||||
.unwrap()
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
fn bench_feature_weights(c: &mut Criterion) {
|
||||
let mut group = c.benchmark_group("feature_weighting");
|
||||
|
||||
let configs = vec![
|
||||
("balanced", FeatureConfig::default()),
|
||||
(
|
||||
"similarity_heavy",
|
||||
FeatureConfig {
|
||||
similarity_weight: 0.7,
|
||||
recency_weight: 0.1,
|
||||
frequency_weight: 0.1,
|
||||
success_weight: 0.05,
|
||||
metadata_weight: 0.05,
|
||||
..Default::default()
|
||||
},
|
||||
),
|
||||
(
|
||||
"recency_heavy",
|
||||
FeatureConfig {
|
||||
similarity_weight: 0.2,
|
||||
recency_weight: 0.5,
|
||||
frequency_weight: 0.1,
|
||||
success_weight: 0.1,
|
||||
metadata_weight: 0.1,
|
||||
..Default::default()
|
||||
},
|
||||
),
|
||||
];
|
||||
|
||||
for (name, config) in configs {
|
||||
group.bench_function(name, |b| {
|
||||
let engineer = FeatureEngineer::with_config(config);
|
||||
let query = vec![0.5; 128];
|
||||
let candidate = Candidate {
|
||||
id: "test".to_string(),
|
||||
embedding: vec![0.4; 128],
|
||||
metadata: HashMap::new(),
|
||||
created_at: chrono::Utc::now().timestamp(),
|
||||
access_count: 100,
|
||||
success_rate: 0.95,
|
||||
};
|
||||
|
||||
b.iter(|| {
|
||||
engineer
|
||||
.extract_features(black_box(&query), black_box(&candidate), None)
|
||||
.unwrap()
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
group.finish();
|
||||
}
|
||||
|
||||
criterion_group!(benches, bench_cosine_similarity, bench_feature_weights);
|
||||
criterion_main!(benches);
|
||||
Reference in New Issue
Block a user