`slice` returns a new `Array`. Therefore such an approach will lead to the data being copied at least twice.

Normal implementations of `push` proactively allocate extra capacity, giving reasonable behaviour even if the presence of many small `push`es.

JavaScript Core limits the number of arguments to a function to 65536. I haven't been able to find any smaller limit. Therefore it might be possible to set the cut off to 65536.