newCapacity

fnsize_t newCapacity(size_t newlength, size_t elemsize) pure nothrow

Given an array of length size that needs to be expanded to newlength, compute a new capacity.

Better version by Dave Fladebo, enhanced by Steven Schveighoffer: This uses an inverse logorithmic algorithm to pre-allocate a bit more space for larger arrays.

  • The maximum "extra" space is about 80% of the requested space. This is for PAGE size and smaller.
  • As the arrays grow, the relative pre-allocated space shrinks.
  • Perhaps most importantly, overall memory usage and stress on the GC is decreased significantly for demanding environments.
  • The algorithm is tuned to avoid any division at runtime.

    Parameters

    newlengthnew .length
    elemsizesize of the element in the new array

    Returns

    new capacity for array