Skip to content

Commit a43905c

Browse files
committed
Split router benchmark into an MPP and a non-MPP route benchmark
1 parent 9812f38 commit a43905c

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
@@ -3438,4 +3438,35 @@ mod benches {
34383438
idx += 1;
34393439
});
34403440
}
3441+
3442+
#[bench]
3443+
fn generate_mpp_routes(bench: &mut Bencher) {
3444+
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");
3445+
let graph = NetworkGraph::read(&mut d).unwrap();
3446+
3447+
// First, get 100 (source, destination) pairs for which route-getting actually succeeds...
3448+
let mut path_endpoints = Vec::new();
3449+
let mut seed: usize = 0xdeadbeef;
3450+
'load_endpoints: for _ in 0..100 {
3451+
loop {
3452+
seed *= 0xdeadbeef;
3453+
let src = graph.get_nodes().keys().skip(seed % graph.get_nodes().len()).next().unwrap();
3454+
seed *= 0xdeadbeef;
3455+
let dst = graph.get_nodes().keys().skip(seed % graph.get_nodes().len()).next().unwrap();
3456+
let amt = seed as u64 % 1_000_000;
3457+
if get_route(src, &graph, dst, Some(InvoiceFeatures::known()), None, &[], amt, 42, &DummyLogger{}).is_ok() {
3458+
path_endpoints.push((src, dst, amt));
3459+
continue 'load_endpoints;
3460+
}
3461+
}
3462+
}
3463+
3464+
// ...then benchmark finding paths between the nodes we learned.
3465+
let mut idx = 0;
3466+
bench.iter(|| {
3467+
let (src, dst, amt) = path_endpoints[idx % path_endpoints.len()];
3468+
assert!(get_route(src, &graph, dst, Some(InvoiceFeatures::known()), None, &[], amt, 42, &DummyLogger{}).is_ok());
3469+
idx += 1;
3470+
});
3471+
}
34413472
}

0 commit comments

Comments
 (0)