@@ -6,15 +6,17 @@ use test::{black_box, Bencher};
66use  std:: ops:: Range ; 
77
88use  numpy:: { PyArray1 ,  PyArray2 ,  PyArray3 } ; 
9- use  pyo3:: { types:: PyAnyMethods ,  Python ,  ToPyObject } ; 
9+ use  pyo3:: { types:: PyAnyMethods ,  Bound ,   Python ,  ToPyObject } ; 
1010
1111#[ bench]  
1212fn  extract_success ( bencher :  & mut  Bencher )  { 
1313    Python :: with_gil ( |py| { 
1414        let  any = PyArray2 :: < f64 > :: zeros_bound ( py,  ( 10 ,  10 ) ,  false ) . into_any ( ) ; 
1515
1616        bencher. iter ( || { 
17-             black_box ( & any) . extract :: < & PyArray2 < f64 > > ( ) . unwrap ( ) ; 
17+             black_box ( & any) 
18+                 . extract :: < Bound < ' _ ,  PyArray2 < f64 > > > ( ) 
19+                 . unwrap ( ) 
1820        } ) ; 
1921    } ) ; 
2022} 
@@ -25,7 +27,9 @@ fn extract_failure(bencher: &mut Bencher) {
2527        let  any = PyArray2 :: < f64 > :: zeros_bound ( py,  ( 10 ,  10 ) ,  false ) . into_any ( ) ; 
2628
2729        bencher. iter ( || { 
28-             black_box ( & any) . extract :: < & PyArray2 < f64 > > ( ) . unwrap_err ( ) ; 
30+             black_box ( & any) 
31+                 . extract :: < Bound < ' _ ,  PyArray2 < f64 > > > ( ) 
32+                 . unwrap_err ( ) 
2933        } ) ; 
3034    } ) ; 
3135} 
@@ -35,9 +39,7 @@ fn downcast_success(bencher: &mut Bencher) {
3539    Python :: with_gil ( |py| { 
3640        let  any = PyArray2 :: < f64 > :: zeros_bound ( py,  ( 10 ,  10 ) ,  false ) . into_any ( ) ; 
3741
38-         bencher. iter ( || { 
39-             black_box ( & any) . downcast :: < PyArray2 < f64 > > ( ) . unwrap ( ) ; 
40-         } ) ; 
42+         bencher. iter ( || black_box ( & any) . downcast :: < PyArray2 < f64 > > ( ) . unwrap ( ) ) ; 
4143    } ) ; 
4244} 
4345
@@ -46,9 +48,7 @@ fn downcast_failure(bencher: &mut Bencher) {
4648    Python :: with_gil ( |py| { 
4749        let  any = PyArray2 :: < f64 > :: zeros_bound ( py,  ( 10 ,  10 ) ,  false ) . into_any ( ) ; 
4850
49-         bencher. iter ( || { 
50-             black_box ( & any) . downcast :: < PyArray2 < f64 > > ( ) . unwrap_err ( ) ; 
51-         } ) ; 
51+         bencher. iter ( || black_box ( & any) . downcast :: < PyArray2 < f64 > > ( ) . unwrap_err ( ) ) ; 
5252    } ) ; 
5353} 
5454
@@ -63,10 +63,12 @@ impl Iterator for Iter {
6363} 
6464
6565fn  from_iter ( bencher :  & mut  Bencher ,  size :  usize )  { 
66-     iter_with_gil ( bencher,  |py| { 
67-         let  iter = black_box ( Iter ( 0 ..size) ) ; 
66+     Python :: with_gil ( |py| { 
67+         bencher. iter ( || { 
68+             let  iter = black_box ( Iter ( 0 ..size) ) ; 
6869
69-         PyArray1 :: from_iter_bound ( py,  iter) ; 
70+             PyArray1 :: from_iter_bound ( py,  iter) 
71+         } ) ; 
7072    } ) ; 
7173} 
7274
@@ -88,10 +90,12 @@ fn from_iter_large(bencher: &mut Bencher) {
8890fn  from_slice ( bencher :  & mut  Bencher ,  size :  usize )  { 
8991    let  vec = ( 0 ..size) . collect :: < Vec < _ > > ( ) ; 
9092
91-     iter_with_gil ( bencher,  |py| { 
92-         let  slice = black_box ( & vec) ; 
93+     Python :: with_gil ( |py| { 
94+         bencher. iter ( || { 
95+             let  slice = black_box ( & vec) ; 
9396
94-         PyArray1 :: from_slice_bound ( py,  slice) ; 
97+             PyArray1 :: from_slice_bound ( py,  slice) 
98+         } ) ; 
9599    } ) ; 
96100} 
97101
@@ -113,10 +117,12 @@ fn from_slice_large(bencher: &mut Bencher) {
113117fn  from_object_slice ( bencher :  & mut  Bencher ,  size :  usize )  { 
114118    let  vec = Python :: with_gil ( |py| ( 0 ..size) . map ( |val| val. to_object ( py) ) . collect :: < Vec < _ > > ( ) ) ; 
115119
116-     iter_with_gil ( bencher,  |py| { 
117-         let  slice = black_box ( & vec) ; 
120+     Python :: with_gil ( |py| { 
121+         bencher. iter ( || { 
122+             let  slice = black_box ( & vec) ; 
118123
119-         PyArray1 :: from_slice_bound ( py,  slice) ; 
124+             PyArray1 :: from_slice_bound ( py,  slice) 
125+         } ) ; 
120126    } ) ; 
121127} 
122128
@@ -138,10 +144,12 @@ fn from_object_slice_large(bencher: &mut Bencher) {
138144fn  from_vec2 ( bencher :  & mut  Bencher ,  size :  usize )  { 
139145    let  vec2 = vec ! [ vec![ 0 ;  size] ;  size] ; 
140146
141-     iter_with_gil ( bencher,  |py| { 
142-         let  vec2 = black_box ( & vec2) ; 
147+     Python :: with_gil ( |py| { 
148+         bencher. iter ( || { 
149+             let  vec2 = black_box ( & vec2) ; 
143150
144-         PyArray2 :: from_vec2_bound ( py,  vec2) . unwrap ( ) ; 
151+             PyArray2 :: from_vec2_bound ( py,  vec2) . unwrap ( ) 
152+         } ) ; 
145153    } ) ; 
146154} 
147155
@@ -163,10 +171,12 @@ fn from_vec2_large(bencher: &mut Bencher) {
163171fn  from_vec3 ( bencher :  & mut  Bencher ,  size :  usize )  { 
164172    let  vec3 = vec ! [ vec![ vec![ 0 ;  size] ;  size] ;  size] ; 
165173
166-     iter_with_gil ( bencher,  |py| { 
167-         let  vec3 = black_box ( & vec3) ; 
174+     Python :: with_gil ( |py| { 
175+         bencher. iter ( || { 
176+             let  vec3 = black_box ( & vec3) ; 
168177
169-         PyArray3 :: from_vec3_bound ( py,  vec3) . unwrap ( ) ; 
178+             PyArray3 :: from_vec3_bound ( py,  vec3) . unwrap ( ) 
179+         } ) ; 
170180    } ) ; 
171181} 
172182
@@ -184,13 +194,3 @@ fn from_vec3_medium(bencher: &mut Bencher) {
184194fn  from_vec3_large ( bencher :  & mut  Bencher )  { 
185195    from_vec3 ( bencher,  2_usize . pow ( 5 ) ) ; 
186196} 
187- 
188- fn  iter_with_gil ( bencher :  & mut  Bencher ,  mut  f :  impl  FnMut ( Python < ' _ > ) )  { 
189-     Python :: with_gil ( |py| { 
190-         bencher. iter ( || { 
191-             let  pool = unsafe  {  py. new_pool ( )  } ; 
192- 
193-             f ( pool. python ( ) ) ; 
194-         } ) ; 
195-     } ) ; 
196- } 
0 commit comments