fre*_*hty 12 javascript performance arraybuffer
我有两个Javascript ArrayBuffers; 每个包含512位数据.我想对两个数组进行xor比较,并将结果存储在第三个数组中.
目前,我正在遍历缓冲区中的元素.在下面的代码中,'distance'是一个整数,feat_a1并且feat_b1是长度为512位的ArrayBuffers.
for(var d1=0; d1<512; d1++){
distance += feat_b1[d1] ^ feat_a1[d1];
}
Run Code Online (Sandbox Code Playgroud)
是否有更有效的方法来对这两个数组进行成对比较?
据我了解,您不能直接使用 arrayBuffer[i],您必须将其传递给某个容器(如 Int8Array)。我制作了下一个示例http://jsfiddle.net/mLurz/,尝试使用此列表中的不同类型数组,并且 Uint32Array 显示出最佳性能
var i;
var dist = 0;
var max = Math.pow(2,32);
var buf1 = new ArrayBuffer(1024);
var x = new Uint32Array(buf1);
for (i = 0; i < 256; ++i) {
x[i] = Math.random()*max;
}
var buf2 = new ArrayBuffer(1024);
var y = new Uint32Array(buf2);
for (i = 0; i < 256; ++i) {
y[i] = Math.random()*max
}
console.time('Uint32Array');
for (var j = 0; j < 1000000; ++j) {
for (i = 0; i < 256; ++i) {
dist += y[i]^x[i];
}
}
console.timeEnd('Uint32Array');
Run Code Online (Sandbox Code Playgroud)