Thursday, 16 March 2017

Passing JavaScript array to c/c++ library and back efficiently

Hi basically what I want to do is passing a JavaScript array to a c module function, then the function modify the array in place, then JavaScript reads the modified array.

Current approach is use carrays.i and array_functions, create and converting Array to and from doubleArray and due to copying array, its giving me result worse than native JS. My array have about 41000 items.

C module: ~10ms(actual C function running time ~0.1ms)

JS module: ~3ms

For me, it's not possible to use doubleArray from very beginning (as this is a part of a larger process). So the question is how can I improve it? Is it possible to use TypedArray/ArrayBuffer? If yes than how?

following is my pseudo code

let cArray = MyCModule.new_doubleArray(array.length),
    outArray = new Array(array.length);
arrayCopyJS2C(cArray, array);//written in JS and use a lot of time
MyCModule.MyCFunction(cArray, array.length);
arrayCopyC2JS(cArray, outArray);//also written in JS and use a lot of time



via Benson Chang

No comments:

Post a Comment