79 lines
1.6 KiB
Rust
79 lines
1.6 KiB
Rust
#![feature(test)]
|
|
|
|
extern crate petgraph;
|
|
extern crate test;
|
|
|
|
use test::Bencher;
|
|
|
|
#[allow(dead_code)]
|
|
mod common;
|
|
use common::*;
|
|
|
|
use petgraph::algo::{greedy_matching, maximum_matching};
|
|
use petgraph::graph::UnGraph;
|
|
|
|
fn huge() -> UnGraph<(), ()> {
|
|
static NODE_COUNT: u32 = 1_000;
|
|
|
|
let mut edges = Vec::new();
|
|
|
|
for i in 0..NODE_COUNT {
|
|
for j in i..NODE_COUNT {
|
|
if i % 3 == 0 && j % 2 == 0 {
|
|
edges.push((i, j));
|
|
}
|
|
}
|
|
}
|
|
|
|
// 999 nodes, 83500 edges
|
|
UnGraph::from_edges(&edges)
|
|
}
|
|
|
|
#[bench]
|
|
fn greedy_matching_bipartite(bench: &mut Bencher) {
|
|
let g = ungraph().bipartite();
|
|
bench.iter(|| greedy_matching(&g));
|
|
}
|
|
|
|
#[bench]
|
|
fn greedy_matching_full(bench: &mut Bencher) {
|
|
let g = ungraph().full_a();
|
|
bench.iter(|| greedy_matching(&g));
|
|
}
|
|
|
|
#[bench]
|
|
fn greedy_matching_bigger(bench: &mut Bencher) {
|
|
let g = ungraph().bigger();
|
|
bench.iter(|| greedy_matching(&g));
|
|
}
|
|
|
|
#[bench]
|
|
fn greedy_matching_huge(bench: &mut Bencher) {
|
|
let g = huge();
|
|
bench.iter(|| greedy_matching(&g));
|
|
}
|
|
|
|
#[bench]
|
|
fn maximum_matching_bipartite(bench: &mut Bencher) {
|
|
let g = ungraph().bipartite();
|
|
bench.iter(|| maximum_matching(&g));
|
|
}
|
|
|
|
#[bench]
|
|
fn maximum_matching_full(bench: &mut Bencher) {
|
|
let g = ungraph().full_a();
|
|
bench.iter(|| maximum_matching(&g));
|
|
}
|
|
|
|
#[bench]
|
|
fn maximum_matching_bigger(bench: &mut Bencher) {
|
|
let g = ungraph().bigger();
|
|
bench.iter(|| maximum_matching(&g));
|
|
}
|
|
|
|
#[bench]
|
|
fn maximum_matching_huge(bench: &mut Bencher) {
|
|
let g = huge();
|
|
bench.iter(|| maximum_matching(&g));
|
|
}
|