On 07/29/2011 05:01 AM, Andrea Giammarchi wrote:
I may be late here, but what's wrong with
firstArray = firstArray.concat(secondArray); ?
If there are still problems I would say no "magic method" can solve them, isn't
it?
That creates a new array rather than mutate the array originally referred to by
|firstArray| here, and I originally specified that only mutation was
acceptable, because creating a new array requires extra space proportional to
the length of |firstArray|.
But I assume you're arguing that an engine could recognize that the copy could
be transformed into a mutation. You'd have to prove that was the *only*
reference to the original array in order to perform that optimization, or prove
that it was observably correct to do that. Such analysis is tricky and costly
time-wise. Relying on it would also be performance-fragile. If you were
pushing incrementally onto an array (say, because you were appending arrays of
bytes read from a network stream, saving them up to be processed all at once),
the entire process is O(n) in bytes processed with push-through-mutation. But
it's O(n**2) with push-by-copying. Thus you'd have to require the developer to
understand when the optimization could be applied, in order to structure his
code such that it would be applied. That level of understanding of compilers,
and of the algorithms actually used to implement them (which won't be publicly
available for some engines), seems way way beyond wh
at can reasonably be expected of web developers.
Jeff
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss