use bgpkit_commons::BgpkitCommons;
use bgpkit_commons::asinfo::IrrSourceConfig;
use std::time::Instant;
fn time_it<F: FnOnce()>(label: &str, f: F) {
let start = Instant::now();
f();
let elapsed = start.elapsed();
eprintln!("{label:50} {elapsed:>8.1?}");
}
fn main() {
tracing_subscriber::fmt::init();
eprintln!("=== Individual data source timing ===\n");
time_it("asn.txt only:", || {
let mut c = BgpkitCommons::new();
c.load_asinfo_with_profile(bgpkit_commons::asinfo::AsInfoProfile::Minimum)
.unwrap();
});
time_it("asn.txt + delegated:", || {
let mut c = BgpkitCommons::new();
let b = c.asinfo_builder().with_delegated();
c.load_asinfo_with(b).unwrap();
});
for src in &[
"RIPE", "APNIC", "ARIN", "LACNIC", "AFRINIC", "NTTCOM", "RADB",
] {
time_it(
&format!("IRR source: {src} (aut-num+route+route6+as-set):"),
|| {
let mut c = BgpkitCommons::new();
let b = c
.asinfo_builder()
.with_irr_sources(IrrSourceConfig::only(&[*src]).unwrap());
c.load_asinfo_with(b).unwrap();
},
);
}
time_it("IRR all sources:", || {
let mut c = BgpkitCommons::new();
let b = c.asinfo_builder().with_irr();
c.load_asinfo_with(b).unwrap();
});
time_it(
"FULL (as2org+population+hegemony+pdb+delegated+irr):",
|| {
let mut c = BgpkitCommons::new();
c.load_asinfo_with_profile(bgpkit_commons::asinfo::AsInfoProfile::Full)
.unwrap();
},
);
eprintln!("\n=== Memory stats ===");
let mut c = BgpkitCommons::new();
c.load_asinfo_with_profile(bgpkit_commons::asinfo::AsInfoProfile::Full)
.unwrap();
let all = c.asinfo_all().unwrap();
let irr_count = all.values().filter(|i| !i.irr.is_empty()).count();
let del_count = all.values().filter(|i| i.delegated.is_some()).count();
let unknown_count = all.values().filter(|i| i.name == "UNKNOWN").count();
eprintln!("Total ASNs: {}", all.len());
eprintln!("ASNs with IRR data: {irr_count}");
eprintln!("ASNs with delegated data: {del_count}");
eprintln!("ASNs still UNKNOWN: {unknown_count}");
}