Skip to content

Commit 2c16606

Browse files
committed
Add benchmarks for PyArray2/3::from_vec2/3.
1 parent a81014c commit 2c16606

File tree

1 file changed

+51
-1
lines changed

1 file changed

+51
-1
lines changed

benches/array.rs

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use test::{black_box, Bencher};
55

66
use std::ops::Range;
77

8-
use numpy::PyArray1;
8+
use numpy::{PyArray1, PyArray2, PyArray3};
99
use pyo3::{Python, ToPyObject};
1010

1111
struct Iter(Range<usize>);
@@ -134,6 +134,56 @@ fn from_object_slice_large(bencher: &mut Bencher) {
134134
from_object_slice(bencher, 2_usize.pow(15));
135135
}
136136

137+
fn from_vec2(bencher: &mut Bencher, size: usize) {
138+
let vec2 = vec![vec![0; size]; size];
139+
140+
iter_with_gil(bencher, |py| {
141+
let vec2 = black_box(&vec2);
142+
143+
PyArray2::from_vec2(py, vec2).unwrap();
144+
});
145+
}
146+
147+
#[bench]
148+
fn from_vec2_small(bencher: &mut Bencher) {
149+
from_vec2(bencher, 2_usize.pow(3));
150+
}
151+
152+
#[bench]
153+
fn from_vec2_medium(bencher: &mut Bencher) {
154+
from_vec2(bencher, 2_usize.pow(5));
155+
}
156+
157+
#[bench]
158+
fn from_vec2_large(bencher: &mut Bencher) {
159+
from_vec2(bencher, 2_usize.pow(8));
160+
}
161+
162+
fn from_vec3(bencher: &mut Bencher, size: usize) {
163+
let vec3 = vec![vec![vec![0; size]; size]; size];
164+
165+
iter_with_gil(bencher, |py| {
166+
let vec3 = black_box(&vec3);
167+
168+
PyArray3::from_vec3(py, vec3).unwrap();
169+
});
170+
}
171+
172+
#[bench]
173+
fn from_vec3_small(bencher: &mut Bencher) {
174+
from_vec3(bencher, 2_usize.pow(2));
175+
}
176+
177+
#[bench]
178+
fn from_vec3_medium(bencher: &mut Bencher) {
179+
from_vec3(bencher, 2_usize.pow(4));
180+
}
181+
182+
#[bench]
183+
fn from_vec3_large(bencher: &mut Bencher) {
184+
from_vec3(bencher, 2_usize.pow(5));
185+
}
186+
137187
fn iter_with_gil(bencher: &mut Bencher, mut f: impl FnMut(Python)) {
138188
Python::with_gil(|py| {
139189
bencher.iter(|| {

0 commit comments

Comments
 (0)