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
signature.asc
Description: This is a digitally signed message part
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org https://mail.scipy.org/mailman/listinfo/numpy-discussion