On Mon, Feb 15, 2016 at 11:26 AM, Zac Hansen <[email protected]> wrote:

> Can you give me a hint or two of behaviors to look for for my testing?
>

Unexpected slowness ;-)

Not knowing what it is that you're going to do, it's really hard to be more
specific than that.


> The warnings I'm seeing about the performance implications of changing the
> prototype on an existing object are wide ranging including things that one
> wouldn't normally think of.
>
> I'm scared that I'll test what I think I want to do, write it, then decide
> I want to extend it in some fashion and hit performance bottlenecks that I
> wouldn't have intuitively expected.  The reason I've got a bug up my butt
> about object.create() isn't necessarily about speed per se, but more about
> consistency and predictability.
>
> Thank you for all your feedback.
>
> --Zac
>
>
>
>
> On Mon, Feb 15, 2016 at 1:27 AM, Jakob Kummerow <[email protected]>
> wrote:
>
>> On Mon, Feb 15, 2016 at 9:19 AM, <[email protected]> wrote:
>>
>>> I've been frustrated by v8::Object::New not accepting a prototype object
>>> as a parameter and it's been hinted strongly that using
>>> v8::Object::SetPrototype after object creation is a bad idea.
>>>
>>
>> Well, rule #1 of performance optimizations is to start by measuring what
>> you care about. Have you tried simply using SetPrototype? Do you have a
>> performance problem?
>>
>> Now I'm left wondering if it would be reasonable to implement (and if it
>>> would be accepted if it worked) to add that functionality to v8::Object::New
>>>
>>
>> The warning that has you so scared mostly just says that dynamically
>> modifying prototype chains is bad. Adding a new API function with a
>> different name that still changes prototypes under the hood isn't going to
>> change that.
>>
>> That said, setting up an object's prototype initially is often
>> unavoidable. If the object hasn't been seen/mucked with by other code, it's
>> probably going to be fine. Again, please measure before you obsess about it.
>>
>> Specifically:
>>>
>>> static Local<Object> New(Isolate *isolate, Local<Object> prototype =
>>> Local<Object>, Local<Object>() propertiesObject=Local<Object>());
>>>
>>> To line up with:
>>> https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create
>>> and not change the functionality of existing calls.
>>>
>>
>> I'm not the right person to give a final "yes" or "no" to this question,
>> but my gut feeling is that instead of overloading Object::New to have
>> several different behaviors, it's probably better to introduce a new
>> function (maybe "Object::Create"?) that does exactly what JS-side
>> Object.create would do, nothing more, nothing less. That said, I'm not
>> convinced any new API call is required at all, see above.
>>
>>
>>> Also, while asking related questions earlier in the week, I was pointed
>>> at ObjectCreate in builtins.cc
>>>
>>> https://github.com/v8/v8/blob/master/src/builtins.cc#L1705
>>>
>>> I looked at it a bit and tried to move the code into v8.h/api.cc but I
>>> was quickly stymied by not understanding the relationship between
>>> v8::Object and v8::i::Object.  Is the code in builtins.cc the right path
>>> for this?  Also, is this a reasonable project for someone not intimately
>>> familiar with the v8 codebase and willing to put in a week's worth of time
>>> into learning and making the change or is this somehow much harder than it
>>> appears?
>>>
>>>
>>> Thank you.
>>>
>>> --Zac
>>>
>>> --
>>> --
>>> v8-dev mailing list
>>> [email protected]
>>> http://groups.google.com/group/v8-dev
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "v8-dev" 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.
>>>
>>
>> --
>> --
>> v8-dev mailing list
>> [email protected]
>> http://groups.google.com/group/v8-dev
>> ---
>> You received this message because you are subscribed to a topic in the
>> Google Groups "v8-dev" group.
>> To unsubscribe from this topic, visit
>> https://groups.google.com/d/topic/v8-dev/5f9uuEQ5b48/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to
>> [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> --
> --
> v8-dev mailing list
> [email protected]
> http://groups.google.com/group/v8-dev
> ---
> You received this message because you are subscribed to the Google Groups
> "v8-dev" 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.
>

-- 
-- 
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- 
You received this message because you are subscribed to the Google Groups 
"v8-dev" 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