On 2013/03/05 8:14 AM, Kurt Smith wrote:
On Tue, Mar 5, 2013 at 1:45 AM, Eric Firing
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.
I strongly oppose this, because it would break the common usage of structured dtypes for reading packed binary data from files. I see no reason to change the default. Eric
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