I'll let you build the benchmark you want to see. But see that it takes 1s to allocate 10M tuples is enough for me.  That allocation time is one of the reasons I don't use numpy record arrays much (because to put in a row you have to construct a tuple).  Python does have a tuple pool that is uses internally but even for a modest dataset you quickly go over that.