Skip to content

Commit babda7b

Browse files
committed
Split router benchmark into an MPP and a non-MPP route benchmark
1 parent 800d82e commit babda7b

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed

lightning/src/routing/router.rs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3439,4 +3439,35 @@ mod benches {
34393439
idx += 1;
34403440
});
34413441
}
3442+
3443+
#[bench]
3444+
fn generate_mpp_routes(bench: &mut Bencher) {
3445+
let mut d = File::open("net_graph-2021-02-12.bin").expect("Please fetch https://bitcoin.ninja/ldk-net_graph-879e309c128-2020-02-12.bin and place it at lightning/net_graph-2021-02-12.bin");
3446+
let graph = NetworkGraph::read(&mut d).unwrap();
3447+
3448+
// First, get 100 (source, destination) pairs for which route-getting actually succeeds...
3449+
let mut path_endpoints = Vec::new();
3450+
let mut seed: usize = 0xdeadbeef;
3451+
'load_endpoints: for _ in 0..100 {
3452+
loop {
3453+
seed *= 0xdeadbeef;
3454+
let src = graph.get_nodes().keys().skip(seed % graph.get_nodes().len()).next().unwrap();
3455+
seed *= 0xdeadbeef;
3456+
let dst = graph.get_nodes().keys().skip(seed % graph.get_nodes().len()).next().unwrap();
3457+
let amt = seed as u64 % 1_000_000;
3458+
if get_route(src, &graph, dst, Some(InvoiceFeatures::known()), None, &[], amt, 42, &DummyLogger{}).is_ok() {
3459+
path_endpoints.push((src, dst, amt));
3460+
continue 'load_endpoints;
3461+
}
3462+
}
3463+
}
3464+
3465+
// ...then benchmark finding paths between the nodes we learned.
3466+
let mut idx = 0;
3467+
bench.iter(|| {
3468+
let (src, dst, amt) = path_endpoints[idx % path_endpoints.len()];
3469+
assert!(get_route(src, &graph, dst, Some(InvoiceFeatures::known()), None, &[], amt, 42, &DummyLogger{}).is_ok());
3470+
idx += 1;
3471+
});
3472+
}
34423473
}

0 commit comments

Comments
 (0)