首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在本机节点模块中维护零副本?

如何在本机节点模块中维护零副本?
EN

Stack Overflow用户
提问于 2013-05-10 07:40:54
回答 1查看 1.3K关注 0票数 4

我正在为进程内数据库编写一个本机节点模块,该数据库具有零拷贝数据查找功能。我希望我的模块也有这个能力。换句话说,当我从数据库获得数据时,我想将数据传递给V8,而不需要复制内存或解析什么。

我该怎么做?

到目前为止,我看到的所有方法都涉及到在JSON之间来回解析(在本例中几乎是浪费资源),或者实例化V8数据结构并将数据复制到它们中。

注意:如果您想知道,零拷贝数据查找意味着(简单地说)数据库引擎在检索数据时不需要复制内存。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-12 17:39:15

我认为我找到了解决办法,尽管它是相当有限的。

有趣的文档可以在这里找到:https://developers.google.com/v8/ (概述)和http://izs.me/v8-docs/main.html (API文档)

似乎V8有一个可用于此目的的ExternalStringResource类:

1ExternalStringResource.html

节点本身也有一个Buffer类,它也可以用于类似的目的:

http://nodejs.org/api/buffer.html

通过使用上述两个类,可以在本机节点模块中实现字符串和字节数组的零拷贝。不幸的是,似乎(在我编写这篇文章时)对象是不可能的。

编辑

如果您只对对象的stringBuffer属性(但不是整个对象本身)拥有零复制能力,则可以使用V8 API中的拦截器或访问器轻松地实现它。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16477385

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档