Hi Stefan,

I'm asking to deeper understand V8.

What's going on in the original code (see first message) which leads to 
single-function-per-many objects?
 

> The following drops the need for the closure, and lets v8 optimize nicely. 
> Unfortunately you lose the hidden aspect of the internal state.
>
> function Machine(power) {
>   this.enabled = true;
> }
>
> Machine.prototype.enable = function() {
>   this.enabled = true;
> };
>
> Machine.prototype.disable() {
>   this.enabled = false
> };
>
>
> On Tue, Jun 10, 2014 at 4:31 PM, Ilya Kantor <[email protected] 
> <javascript:>> wrote:
>
>> Hi Ben,
>>
>> Is that somehow related with "Hidden classes" for objects or that's a 
>> completely another optimization technique?
>>
>> среда, 11 июня 2014 г., 0:29:07 UTC+4 пользователь Ben Noordhuis написал:
>>
>>> On Tue, Jun 10, 2014 at 9:58 PM, Ilya Kantor <[email protected]> wrote: 
>>> > Hi, 
>>> > 
>>> > When I create many objects new Machine like this 
>>> > ``` 
>>> > function Machine(power) { 
>>> >   var enabled = false; 
>>> > 
>>> >   this.enable = function() { 
>>> >     enabled = true; 
>>> >   }; 
>>> >   this.disable = function() { 
>>> >     enabled = false; 
>>> >   }; 
>>> > } 
>>> > 
>>> > var machines = [] 
>>> > for(var i=0; i<10000; i++) machines.push(new Machine) 
>>> > ``` 
>>> > 
>>> > ...I see in Chrome Heap Profile that every object has 36 bytes for 
>>> function 
>>> > enable/disable. 
>>> > That is so even if the function code is actually longer. 
>>> > 
>>> > Do I get it right that V8 actually creates these functions only ONE 
>>> time and 
>>> > uses it for all machines? 
>>>
>>> That's correct, there is only one function.  Those 36 byte instances 
>>> that you're seeing are closure environments for the captured variable. 
>>>
>>  -- 
>> -- 
>> v8-users mailing list
>> [email protected] <javascript:>
>> http://groups.google.com/group/v8-users
>> --- 
>> You received this message because you are subscribed to the Google Groups 
>> "v8-users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
-- 
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users
--- 
You received this message because you are subscribed to the Google Groups 
"v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to