On a related note: ObjectElements::VALUES_PER_HEADER is 2. Is this
because 2 * sizeof(HeapSlot) is 16 bytes, which is equal to
sizeof(ObjectElements)?

Nick

On Wed, Jul 16, 2014 at 11:34 PM, Nicholas Nethercote
<[email protected]> wrote:
> On Wed, Jul 16, 2014 at 11:08 PM, Nicholas Nethercote
> <[email protected]> wrote:
>> Hi,
>>
>> Here's some code from pdf.js:
>>
>> function stringToArray(str) {
>>   var length = str.length;
>>   var array = [];
>>   for (var i = 0; i < length; ++i) {
>>     array[i] = str.charCodeAt(i);
>>   }
>>   return array;
>> }
>>
>> This kind of code shows up in a number of places in pdf.js. Pretty
>> simple -- filling in an array one element at a time.
>>
>> Underneath the covers, this causes the array to repeatedly double in
>> size, which is annoying. And I thought I could avoid it because we
>> know how big the array will be in advance. So I changed the 3rd line
>> to this:
>>
>>   var array = new Array(length);
>>
>> but I still get the same sort of doubling behaviour under the covers.
>
> Oh wait. It depends on the value of |length|. If it's 2050 or less,
> then the right-sized array is allocated immediately. Otherwise, it
> allocates 10 elements and then does the doubling thing. I guess
> there's a limit to how much we'll pre-allocate.
>
> So using |new Array(length)| seems like the best thing, then.
>
> Nick
_______________________________________________
dev-tech-js-engine-internals mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-js-engine-internals

Reply via email to