title: Huge time difference on creating numpy.zeros for tiny difference in size of array
body: <p>I was trying to determine the time complexity of doing <code>numpy.zeros</code> so I ran the following tests.  It seems to be linear with the size of the array you're creating, but at a certain point there is a huge disparity on how much time it takes.  Here are the interesting cases where <strong>hardly changing the array size at all changes the creation time by an order of magnitude</strong>.</p>
  
  <pre><code>python -m timeit -n 1000 -s "import numpy" "numpy.zeros(64500, dtype=float)"
  10000 loops, best of 3: 33.5 usec per loop
  
  
  python -m timeit -s "import numpy" "numpy.zeros(65000, dtype=float)"
  1000 loops, best of 3: 418 usec per loop
  </code></pre>
  
  <p>That is a <em>huge disparity</em>!  Below an array of size 64500 the time complexity is roughly linear with array size, and <strong>above</strong> an array of size 65000 the time complexity is roughly linear.  <strong>Why is there such a staggering time difference here?</strong></p>
  
  <p>My understanding is that internally Python stores everything in its own special heap.  Is this occurring because numpy uses C, and it stores arrays of a certain size on the C stack and arrays of another size on the C heap?  I'm not even sure if that question makes sense.</p>
  
  <p>I'm using 32-bit python 3.3.1 and numpy 1.7.0rc1 on a Windows 7 machine.</p>