On Mo, 2016-12-26 at 10:34 +0100, Nicolas P. Rougier wrote: > Hi all, > > > I'm trying to understand why viewing an array as bytes before > clearing makes the whole operation faster. > I imagine there is some kind of special treatment for byte arrays but > I've no clue. >
Sure, if its a 1-byte width type, the code will end up calling
`memset`. If it is not, it will end up calling a loop with:
while (N > 0) {
*dst = output;
*dst += 8; /* or whatever element size/stride is */
--N;
}
now why this gives such a difference, I don't really know, but I guess
it is not too surprising and may depend on other things as well.
- Sebastian
>
> # Native float
> Z_float = np.ones(1000000, float)
> Z_int = np.ones(1000000, int)
>
> %timeit Z_float[...] = 0
> 1000 loops, best of 3: 361 µs per loop
>
> %timeit Z_int[...] = 0
> 1000 loops, best of 3: 366 µs per loop
>
> %timeit Z_float.view(np.byte)[...] = 0
> 1000 loops, best of 3: 267 µs per loop
>
> %timeit Z_int.view(np.byte)[...] = 0
> 1000 loops, best of 3: 266 µs per loop
>
>
> Nicolas
> _______________________________________________
> NumPy-Discussion mailing list
> [email protected]
> https://mail.scipy.org/mailman/listinfo/numpy-discussion
signature.asc
Description: This is a digitally signed message part
_______________________________________________ NumPy-Discussion mailing list [email protected] https://mail.scipy.org/mailman/listinfo/numpy-discussion
