3
3
//! Uses `Arc<usize>` for being closer to real versions.
4
4
// SPDX-License-Identifier: MPL-2.0
5
5
6
- use pubgrub:: {
7
- resolve, DefaultStringReporter , OfflineDependencyProvider , PubGrubError , Range , Reporter ,
8
- SelectedDependencies ,
9
- } ;
6
+ use pubgrub:: { resolve, OfflineDependencyProvider , Range } ;
10
7
use std:: fmt;
11
8
use std:: sync:: Arc ;
12
9
use version_ranges:: Ranges ;
@@ -119,19 +116,15 @@ fn encode_constraints(
119
116
}
120
117
}
121
118
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 ) {
123
120
let mut dependency_provider = DP :: new ( ) ;
124
121
encode_constraints ( & mut dependency_provider) ;
125
122
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
+ } ) ;
135
128
}
136
129
137
130
fn bench_solve ( c : & mut Criterion ) {
@@ -149,30 +142,22 @@ fn bench_solve(c: &mut Criterion) {
149
142
_ _ _ | 4 1 9 | _ _ 5
150
143
_ _ _ | _ 8 6 | 1 7 9"# ,
151
144
) ;
152
- c. bench_function ( "sudoku-easy" , |b| {
153
- b. iter ( || {
154
- solve ( black_box ( easy. clone ( ) ) ) ;
155
- } )
156
- } ) ;
157
145
let hard = from_board (
158
146
r#"
159
147
5 3 _ | _ 7 _ | _ _ _
160
148
6 _ _ | 1 9 5 | _ _ _
161
149
_ 9 8 | _ _ _ | _ 6 _
162
- -------+-------+-------
150
+ -------+-------+-------
163
151
8 _ _ | _ 6 _ | _ _ 3
164
152
4 _ _ | 8 _ 3 | _ _ 1
165
153
7 _ _ | _ 2 _ | _ _ 6
166
- -------+-------+-------
154
+ -------+-------+-------
167
155
_ 6 _ | _ _ _ | 2 8 _
168
156
_ _ _ | 4 1 9 | _ _ 5
169
157
_ _ _ | _ 8 _ | _ 7 9"# ,
170
158
) ;
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" ) ;
176
161
}
177
162
178
163
criterion_group ! ( benches, bench_solve) ;
0 commit comments