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 } ;
107use std:: fmt;
118use std:: sync:: Arc ;
129use 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
137130fn 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
178163criterion_group ! ( benches, bench_solve) ;
0 commit comments