Ven*_*emo 5 c++ v8 node.js node-modules
我正在为进程内数据库编写一个本机节点模块,该模块具有零复制数据查找功能。我希望我的模块也具有这种能力。换句话说,当我从数据库获取数据时,我希望将数据传递给V8,而不需要复制内存或需要解析某些内容。
我怎样才能做到这一点?
到目前为止,我见过的所有方法都涉及在 JSON 之间来回解析(在这种情况下几乎浪费资源)或实例化 V8 数据结构并将数据复制到其中。
注意:如果您想知道,零复制数据查找意味着(简而言之)数据库引擎在检索数据时不需要复制内存。
我想我找到了解决方案,尽管它相当有限。
有趣的文档可以在这里找到: https: //developers.google.com/v8/(概述)和http://izs.me/v8-docs/main.html(API文档)
似乎V8有一个ExternalStringResource类可以用于此目的:
http://izs.me/v8-docs/classv8_1_1String_1_1ExternalStringResource.html
Node 本身也有一个Buffer类,也可用于类似的目的:
http ://nodejs.org/api/buffer.html
通过使用上述两个类,可以在本机节点模块中为字符串和字节数组实现零复制。不幸的是(在我写这篇文章时)似乎对于对象来说这是不可能的。
编辑
如果您只需要对对象的string或Buffer属性(而不是整个对象本身)进行零复制,那么可以使用 V8 API 中的拦截器或访问器轻松实现。
| 归档时间: |
|
| 查看次数: |
1456 次 |
| 最近记录: |