Skip to content

Commit a80e9c7

Browse files
committed
Tweak code generation of PyArray::from_vec(2/3).
1 parent 0a6c3a4 commit a80e9c7

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

src/array.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ use pyo3::{
1919
Python, ToPyObject,
2020
};
2121

22+
use crate::cold;
2223
use crate::convert::{ArrayExt, IntoPyArray, NpyIndex, ToNpyDims, ToPyArray};
2324
use crate::dtype::{Element, PyArrayDescr};
2425
use crate::error::{DimensionalityError, FromVecError, NotContiguousError, TypeError};
@@ -972,6 +973,7 @@ impl<T: Element> PyArray<T, Ix1> {
972973
/// assert_eq!(pyarray.readonly().as_slice().unwrap(), &[1, 2, 3, 4, 5]);
973974
/// });
974975
/// ```
976+
#[inline(always)]
975977
pub fn from_vec<'py>(py: Python<'py>, vec: Vec<T>) -> &'py Self {
976978
vec.into_pyarray(py)
977979
}
@@ -1097,6 +1099,7 @@ impl<T: Element> PyArray<T, Ix2> {
10971099
let mut data_ptr = array.data();
10981100
for v in v {
10991101
if v.len() != len2 {
1102+
cold();
11001103
return Err(FromVecError::new(v.len(), len2));
11011104
}
11021105
clone_elements(v, &mut data_ptr);
@@ -1136,10 +1139,12 @@ impl<T: Element> PyArray<T, Ix3> {
11361139
let mut data_ptr = array.data();
11371140
for v in v {
11381141
if v.len() != len2 {
1142+
cold();
11391143
return Err(FromVecError::new(v.len(), len2));
11401144
}
11411145
for v in v {
11421146
if v.len() != len3 {
1147+
cold();
11431148
return Err(FromVecError::new(v.len(), len3));
11441149
}
11451150
clone_elements(v, &mut data_ptr);

src/lib.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@ mod sealed {
8282
pub trait Sealed {}
8383
}
8484

85+
#[cold]
86+
#[inline(always)]
87+
fn cold() {}
88+
8589
/// Create a [`PyArray`] with one, two or three dimensions.
8690
///
8791
/// This macro is backed by [`ndarray::array`].

0 commit comments

Comments
 (0)