@@ -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