I'm using node and v8 to run a relatively big program on an embedded 
system. Studies indicate that compiling the user javascript code sometimes 
take up to 3 seconds, which make for slow startup times of the javascript 
application. 

Is there any way to speed this up? I have been trying to use 
the ScriptCompiler::CachedData, producing this on first compilation and 
then saving to disk. But I have been running into problems.

1)
If I use ScriptCompiler::kProduceCodeCache I often get problems when 
serializing, with a failure in CodeSerializer::SerializeObject that I don't 
understand:

// The code-caches link to context-specific code objects, which// the startup 
and context serializes cannot currently handle.
DCHECK(!heap_object->IsMap() ||
 Map::cast(heap_object)->code_cache() ==
     heap_object->GetHeap()->empty_fixed_array());


Can anyone explain why I get this? I don't understand the comment.

IF compilation and serializing succeeds I will get a CachedData that I try 
to save to disk. On subsequent loads of the process it seems like I can't 
use this saved Cache however. Does anyone know if this is because the 
generated code has hardcoded memory addresses that will not work once the 
process has been restarted?

2)
If I use CompileOptions::kProduceParserCache it seems to work just fine. 
However I notice two problems.

a) Some files will not produce any data in the cache.

b) Those that do only generate 20 bytes of data, and loading this on 
subsequent compilations doesn't seems to speed up compilation at all.

Can anyone explain those two points?

Any other ideas on how it would be possible to speed up the initial loading 
of larger scripts? I assume we must be able to cache something, but so far 
I haven't had much success. 

Thanks in advance.



-- 
-- 
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