我有两个JavaScript的ArrayBuffer;每个包含512位数据。我想对这两个数组进行异或比较,并将结果存储在第三个数组中。
目前,我正在循环遍历缓冲区中的元素。在下面的代码中,“distance”是一个整数,“feat_a1”和“feat_b1”是512位长度的ArrayBuffer。
for(var d1=0; d1<512; d1++){
distance += feat_b1[d1] ^ feat_a1[d1];
}
有没有更有效的方法来比较这两个数组的配对?
我有两个JavaScript的ArrayBuffer;每个包含512位数据。我想对这两个数组进行异或比较,并将结果存储在第三个数组中。
目前,我正在循环遍历缓冲区中的元素。在下面的代码中,“distance”是一个整数,“feat_a1”和“feat_b1”是512位长度的ArrayBuffer。
for(var d1=0; d1<512; d1++){
distance += feat_b1[d1] ^ feat_a1[d1];
}
有没有更有效的方法来比较这两个数组的配对?
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');
while
来挤出更多性能,但需要进行测试。即使展开循环,在最近的浏览器中也可能会变慢,因为它们进行了优化。 - Xotic750distance
代表什么,是某种按位编辑距离吗?“求和位”是什么意思? - Bergi