On Tue, Mar 5, 2013 at 1:45 AM, Eric Firing <efir...@hawaii.edu> wrote: > On 2013/03/04 9:01 PM, Nicolas Rougier wrote: >>> >This made me think of a serious performance limitation of structured >>> >dtypes: a >>> >structured dtype is always "packed", which may lead to terrible byte >>> >alignment >>> >for common types. For instance, `dtype([('a', 'u1'), ('b', >>> >'u8')]).itemsize == 9`, >>> >meaning that the 8-byte integer is not aligned as an equivalent C-struct's >>> >would be, leading to all sorts of horrors at the cache and register level. > > Doesn't the "align" kwarg of np.dtype do what you want? > > In [2]: dt = np.dtype(dict(names=['a', 'b'], formats=['u1', 'u8']), > align=True) > > In [3]: dt.itemsize > Out[3]: 16
Thanks! That's what I get for not checking before posting. Consider this my vote to make `aligned=True` the default. > > Eric > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion