I've been experimenting with Node.JS and C++ addons and found that populating an Int32Array is considerably slower when using the C++ addon rather than directly doing so in Node.JS / JavaScript.
Node.JS: 133 ~ ms
C++: 1103 ~ ms
Does anyone know why this is? My test code consists of a fairly large array and for loops containing if statements.
I suspect I'm populating the array incorrectly in my C++ addon. (?)
JavaScript:
var testArray_ = new Int32Array(36594368);
var i = 0;
for (var xi = 0; xi < 332; xi++) {
for (var yi = 0; yi < 332; yi++) {
for (var zi = 0; zi < 332; zi++) {
if ((xi + yi + zi) % 62 == 0) testArray_[i] = 2;
else if (yi < 16) testArray_[i] = 2;
else if (yi == 16) testArray_[i] = 1;
else testArray_[i] = 0;
i++;
}
}
}
C++ Addon:
Local<Int32Array> testArray = Int32Array::New(ArrayBuffer::New(isolate, 4 * 36594368), 0, 36594368);
int i = 0;
for (int xi = 0; xi < 332; xi++) {
for (int yi = 0; yi < 332; yi++) {
for (int zi = 0; zi < 332; zi++) {
if ((xi + yi + zi) % 62 == 0) testArray->Set(i, Integer::New(isolate, 2));
else if (yi < 16) testArray->Set(i, Integer::New(isolate, 2));
else if (yi == 16) testArray->Set(i, Integer::New(isolate, 1));
else testArray->Set(i, Integer::New(isolate, 0));
i++;
}
}
}
Aucun commentaire:
Enregistrer un commentaire