So sticking with numpy (and avoiding all the "dtype carnage") we're looking at ~18 s. Leaving ~4 s to convert the collated fields into cubes. Unless there are a *lot* of collated fields that seems like plenty of time, no?