Hi Kasper,

Yes, we use the old version. I checked the new v8 source and the full GC is
removed from creating new context.
Thanks for the reminder.

Then I have other questions?
1. It seems that without GC creating context will be faster, but, I wonder
if it just moved the cost from here to other places.
2. What's the reason to remove GC from creating new context?
3. Where can I get the benchmark data between different v8 versions?

Thanks again!

Kenny

2010/12/4 Kasper Lund <[email protected]>

> Hua ye,
>
> Which version of V8 are you using? The current version of V8 does not
> invoke the garbage collector when creating new contexts and it hasn't
> since r4003 which was submitted in early March, 2010.
>
> Cheers,
> Kasper
>
> On Sat, Dec 4, 2010 at 6:05 AM, hua ye <[email protected]> wrote:
> > Dears,
> >
> > Is there any way to boost the speed of v8 GC?
> > From my profiling when v8 creates a new context, it will execute a
> > full GC if the old context is disposed. The full GC costs most of the
> > time.
> >
> > Is there any idea to boost this, the following is my profiling result:
> >
> > Persistent<Context> v8::Context::New(
> >    v8::ExtensionConfiguration* extensions,
> >    v8::Handle<ObjectTemplate> global_template,
> >    v8::Handle<Value> global_object) {
> >  EnsureInitialized("v8::Context::New()");
> >  LOG_API("Context::New");
> >  ON_BAILOUT("v8::Context::New()", return Persistent<Context>());
> >
> >  // Enter V8 via an ENTER_V8 scope.
> >  i::Handle<i::Context> env;
> >  {
> >    ENTER_V8;
> > #if defined(ANDROID)
> >    // On mobile device, full GC is expensive, leave it to the system
> > to
> >    // decide when should make a full GC.
> > #else
> >    // Give the heap a chance to cleanup if we've disposed contexts.
> >
> > i::Heap::CollectAllGarbageIfContextDisposed();
>        //
> > ******** Most of the time here
> > #endif
> >
> >   ......
> >    ......
> >    ......
> >
> >    // Create the environment.
> >    env =
> > i::Bootstrapper::CreateEnvironment(                              //%%%%
> > % create environment costs also too much time
> >        Utils::OpenHandle(*global_object),
> >        proxy_template,
> >        extensions);
> >
> >    // Restore the access check info on the global template.
> >    if (!global_template.IsEmpty()) {
> >      ASSERT(!global_constructor.is_null());
> >      ASSERT(!proxy_constructor.is_null());
> >      global_constructor->set_access_check_info(
> >          proxy_constructor->access_check_info());
> >      global_constructor->set_needs_access_check(
> >          proxy_constructor->needs_access_check());
> >    }
> >  }
> >  // Leave V8.
> >
> >  if (env.is_null())
> >    return Persistent<Context>();
> >  return Persistent<Context>(Utils::ToLocal(env));
> > }
> >
> > --
> > v8-users mailing list
> > [email protected]
> > http://groups.google.com/group/v8-users
> >
>
> --
> v8-users mailing list
> [email protected]
> http://groups.google.com/group/v8-users
>

-- 
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users

Reply via email to