
Thanks for the explanation Sebastian, makes sense. Nicolas
On 26 Dec 2016, at 11:48, Sebastian Berg <sebastian@sipsolutions.net> wrote:
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 NumPy-Discussion@scipy.org https://mail.scipy.org/mailman/listinfo/numpy-discussion
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org https://mail.scipy.org/mailman/listinfo/numpy-discussion