在node.js

时间:2015-07-23 08:48:22

标签: c++ node.js v8

我有一个使用Node.js运行的应用程序,似乎单个javascript文件的编译需要太长时间。我想尝试缓存已编译的数据,以便加快相同脚本的后续编译。

我到目前为止尝试的方法是将代码放入node.js ContextifyScript :: New,它将使用kProduceCodeCache为这里编译的脚本生成ScriptCompiler :: CachedData。然后我将CachedData保存到磁盘,并在后续编译中(也在重新启动node.js可执行文件后)我计划从磁盘读取CachedData并将其传递给CompileUnbound。

从v8标题中的CachedData描述中我假设这是该类的预期目的。但是在编译代码的序列化过程中,我在此代码中的CodeSerializer :: SerializeObject中出现调试断言失败:

// 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());

我不明白这里究竟是什么问题。我知道有问题的javascript可以编译和序列化,因为如果我这样做而不使用Node.js(只需按照v8测试中提供的示例),我就可以编译和序列化。 那么,有谁知道这意味着什么,我做错了什么?是否有可能以其他方式实现编译数据的缓存?

0 个答案:

没有答案