Skip to content

Commit b953fe5

Browse files
committed
Specialize do_slice for |step| = 1 case
1 parent 27c84a5 commit b953fe5

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

src/dimension/mod.rs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -380,15 +380,18 @@ pub fn do_slice(dim: &mut usize, stride: &mut usize, slice: Slice) -> isize {
380380
offset += stride_offset(m - 1, *stride);
381381
}
382382

383-
let s_prim = s * step;
384-
385-
let d = m / step.abs() as usize;
386-
let r = m % step.abs() as usize;
387-
let m_prim = d + if r > 0 { 1 } else { 0 };
383+
// Update dimension.
384+
let abs_step = step.abs() as usize;
385+
*dim = if abs_step == 1 {
386+
m
387+
} else {
388+
let d = m / abs_step;
389+
let r = m % abs_step;
390+
d + if r > 0 { 1 } else { 0 }
391+
};
388392

389-
// Update dimension and stride coordinate
390-
*dim = m_prim;
391-
*stride = s_prim as usize;
393+
// Update stride.
394+
*stride = (s * step) as usize;
392395

393396
offset
394397
}

0 commit comments

Comments
 (0)