@@ -6,15 +6,17 @@ use test::{black_box, Bencher};
6
6
use std:: ops:: Range ;
7
7
8
8
use numpy:: { PyArray1 , PyArray2 , PyArray3 } ;
9
- use pyo3:: { types:: PyAnyMethods , Python , ToPyObject } ;
9
+ use pyo3:: { types:: PyAnyMethods , Bound , Python , ToPyObject } ;
10
10
11
11
#[ bench]
12
12
fn extract_success ( bencher : & mut Bencher ) {
13
13
Python :: with_gil ( |py| {
14
14
let any = PyArray2 :: < f64 > :: zeros_bound ( py, ( 10 , 10 ) , false ) . into_any ( ) ;
15
15
16
16
bencher. iter ( || {
17
- black_box ( & any) . extract :: < & PyArray2 < f64 > > ( ) . unwrap ( ) ;
17
+ black_box ( & any)
18
+ . extract :: < Bound < ' _ , PyArray2 < f64 > > > ( )
19
+ . unwrap ( )
18
20
} ) ;
19
21
} ) ;
20
22
}
@@ -25,7 +27,9 @@ fn extract_failure(bencher: &mut Bencher) {
25
27
let any = PyArray2 :: < f64 > :: zeros_bound ( py, ( 10 , 10 ) , false ) . into_any ( ) ;
26
28
27
29
bencher. iter ( || {
28
- black_box ( & any) . extract :: < & PyArray2 < f64 > > ( ) . unwrap_err ( ) ;
30
+ black_box ( & any)
31
+ . extract :: < Bound < ' _ , PyArray2 < f64 > > > ( )
32
+ . unwrap_err ( )
29
33
} ) ;
30
34
} ) ;
31
35
}
@@ -35,9 +39,7 @@ fn downcast_success(bencher: &mut Bencher) {
35
39
Python :: with_gil ( |py| {
36
40
let any = PyArray2 :: < f64 > :: zeros_bound ( py, ( 10 , 10 ) , false ) . into_any ( ) ;
37
41
38
- bencher. iter ( || {
39
- black_box ( & any) . downcast :: < PyArray2 < f64 > > ( ) . unwrap ( ) ;
40
- } ) ;
42
+ bencher. iter ( || black_box ( & any) . downcast :: < PyArray2 < f64 > > ( ) . unwrap ( ) ) ;
41
43
} ) ;
42
44
}
43
45
@@ -46,9 +48,7 @@ fn downcast_failure(bencher: &mut Bencher) {
46
48
Python :: with_gil ( |py| {
47
49
let any = PyArray2 :: < f64 > :: zeros_bound ( py, ( 10 , 10 ) , false ) . into_any ( ) ;
48
50
49
- bencher. iter ( || {
50
- black_box ( & any) . downcast :: < PyArray2 < f64 > > ( ) . unwrap_err ( ) ;
51
- } ) ;
51
+ bencher. iter ( || black_box ( & any) . downcast :: < PyArray2 < f64 > > ( ) . unwrap_err ( ) ) ;
52
52
} ) ;
53
53
}
54
54
@@ -63,10 +63,12 @@ impl Iterator for Iter {
63
63
}
64
64
65
65
fn 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) ) ;
68
69
69
- PyArray1 :: from_iter_bound ( py, iter) ;
70
+ PyArray1 :: from_iter_bound ( py, iter)
71
+ } ) ;
70
72
} ) ;
71
73
}
72
74
@@ -88,10 +90,12 @@ fn from_iter_large(bencher: &mut Bencher) {
88
90
fn from_slice ( bencher : & mut Bencher , size : usize ) {
89
91
let vec = ( 0 ..size) . collect :: < Vec < _ > > ( ) ;
90
92
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) ;
93
96
94
- PyArray1 :: from_slice_bound ( py, slice) ;
97
+ PyArray1 :: from_slice_bound ( py, slice)
98
+ } ) ;
95
99
} ) ;
96
100
}
97
101
@@ -113,10 +117,12 @@ fn from_slice_large(bencher: &mut Bencher) {
113
117
fn from_object_slice ( bencher : & mut Bencher , size : usize ) {
114
118
let vec = Python :: with_gil ( |py| ( 0 ..size) . map ( |val| val. to_object ( py) ) . collect :: < Vec < _ > > ( ) ) ;
115
119
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) ;
118
123
119
- PyArray1 :: from_slice_bound ( py, slice) ;
124
+ PyArray1 :: from_slice_bound ( py, slice)
125
+ } ) ;
120
126
} ) ;
121
127
}
122
128
@@ -138,10 +144,12 @@ fn from_object_slice_large(bencher: &mut Bencher) {
138
144
fn from_vec2 ( bencher : & mut Bencher , size : usize ) {
139
145
let vec2 = vec ! [ vec![ 0 ; size] ; size] ;
140
146
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) ;
143
150
144
- PyArray2 :: from_vec2_bound ( py, vec2) . unwrap ( ) ;
151
+ PyArray2 :: from_vec2_bound ( py, vec2) . unwrap ( )
152
+ } ) ;
145
153
} ) ;
146
154
}
147
155
@@ -163,10 +171,12 @@ fn from_vec2_large(bencher: &mut Bencher) {
163
171
fn from_vec3 ( bencher : & mut Bencher , size : usize ) {
164
172
let vec3 = vec ! [ vec![ vec![ 0 ; size] ; size] ; size] ;
165
173
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) ;
168
177
169
- PyArray3 :: from_vec3_bound ( py, vec3) . unwrap ( ) ;
178
+ PyArray3 :: from_vec3_bound ( py, vec3) . unwrap ( )
179
+ } ) ;
170
180
} ) ;
171
181
}
172
182
@@ -184,13 +194,3 @@ fn from_vec3_medium(bencher: &mut Bencher) {
184
194
fn from_vec3_large ( bencher : & mut Bencher ) {
185
195
from_vec3 ( bencher, 2_usize . pow ( 5 ) ) ;
186
196
}
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