将c ++双缓冲区传递给Node Js(直接)[Node JS:V8 c ++:Nan]

时间:2015-07-09 16:38:58

标签: c++ node.js pointers v8 node.js-addon

我试图将确定的双打数组从c ++传递回Node JS。我现在这样做的方式有效,但它会扼杀性能。因为我需要将双缓冲区转换为v8数组。有没有办法直接将双打传递给节点JS而不进行转换?这是我希望避免使用的伪转换代码:

NAN_METHOD(getDoubles) {
    NanScope();

    .... calculate double array named:  double *VALS;
    .... collected elsewhere in my source. Then:

    int  len=6;
    Local<Array>  ARRAY  = NanNew<Array>(len);
    Local<Object> PARAMS = NanNew<Object>();
    for (i=0; i<len; i++)   {
      ARRAY->Set(i, NanNew<Number>(VALS[i]));
    }       
    PARAMS->Set(NanNew<String>("values"), ARRAY);
    NanReturnValue(PARAMS);
}

从节点js,我得到这样的双打:

var addon = require("mycpp_addon");
var result = addon.getDoubles();
console.log(result.values);

1 个答案:

答案 0 :(得分:0)

如果要传递大数据,则应使用Buffer类。

this page上,您可以获得底部附近的使用示例。

这样你就可以将一块内存传回javascript而不进行任何复制。