Skip to content

Commit 3741e3b

Browse files
authored
Monitor only the resolve step in the sudoku bench (#285)
1 parent 4c6cdde commit 3741e3b

File tree

1 file changed

+11
-26
lines changed

1 file changed

+11
-26
lines changed

benches/sudoku.rs

+11-26
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,7 @@
33
//! Uses `Arc<usize>` for being closer to real versions.
44
// SPDX-License-Identifier: MPL-2.0
55

6-
use pubgrub::{
7-
resolve, DefaultStringReporter, OfflineDependencyProvider, PubGrubError, Range, Reporter,
8-
SelectedDependencies,
9-
};
6+
use pubgrub::{resolve, OfflineDependencyProvider, Range};
107
use std::fmt;
118
use std::sync::Arc;
129
use version_ranges::Ranges;
@@ -119,19 +116,15 @@ fn encode_constraints(
119116
}
120117
}
121118

122-
fn solve(board: Vec<(SudokuPackage, Ranges<Arc<usize>>)>) -> SelectedDependencies<DP> {
119+
fn solve(c: &mut Criterion, board: Vec<(SudokuPackage, Ranges<Arc<usize>>)>, case: &str) {
123120
let mut dependency_provider = DP::new();
124121
encode_constraints(&mut dependency_provider);
125122
dependency_provider.add_dependencies(SudokuPackage::Root, Arc::new(1usize), board);
126-
match resolve(&dependency_provider, SudokuPackage::Root, Arc::new(1usize)) {
127-
Ok(sol) => sol,
128-
Err(PubGrubError::NoSolution(mut derivation_tree)) => {
129-
derivation_tree.collapse_no_versions();
130-
eprintln!("{}", DefaultStringReporter::report(&derivation_tree));
131-
std::process::exit(1);
132-
}
133-
Err(err) => panic!("{:?}", err),
134-
}
123+
c.bench_function(case, |b| {
124+
b.iter(|| {
125+
let _ = resolve(&dependency_provider, SudokuPackage::Root, Arc::new(1usize));
126+
})
127+
});
135128
}
136129

137130
fn bench_solve(c: &mut Criterion) {
@@ -149,30 +142,22 @@ fn bench_solve(c: &mut Criterion) {
149142
_ _ _ | 4 1 9 | _ _ 5
150143
_ _ _ | _ 8 6 | 1 7 9"#,
151144
);
152-
c.bench_function("sudoku-easy", |b| {
153-
b.iter(|| {
154-
solve(black_box(easy.clone()));
155-
})
156-
});
157145
let hard = from_board(
158146
r#"
159147
5 3 _ | _ 7 _ | _ _ _
160148
6 _ _ | 1 9 5 | _ _ _
161149
_ 9 8 | _ _ _ | _ 6 _
162-
-------+-------+-------
150+
-------+-------+-------
163151
8 _ _ | _ 6 _ | _ _ 3
164152
4 _ _ | 8 _ 3 | _ _ 1
165153
7 _ _ | _ 2 _ | _ _ 6
166-
-------+-------+-------
154+
-------+-------+-------
167155
_ 6 _ | _ _ _ | 2 8 _
168156
_ _ _ | 4 1 9 | _ _ 5
169157
_ _ _ | _ 8 _ | _ 7 9"#,
170158
);
171-
c.bench_function("sudoku-hard", |b| {
172-
b.iter(|| {
173-
solve(black_box(hard.clone()));
174-
})
175-
});
159+
solve(c, easy, "sudoku-easy");
160+
solve(c, hard, "sudoku-hard");
176161
}
177162

178163
criterion_group!(benches, bench_solve);

0 commit comments

Comments
 (0)