我正在为研究项目编写一些代码。我用JavaScript编写它是因为我希望能够在任何地方运行它,并在完成项目后能够将其发布在网络上。但是,我还需要数十万次重新运行此代码,并将结果作为研究项目的一部分进行研究,以便提高效率。 对于项目的webgl部分,我正在使用数组缓冲区和类型化的数组。
是否将所有Javascript变量都使用数组缓冲区或类型化的数组可以使普通javascript的性能得到改善?
从我阅读的内容来看,这听起来像是Web程序集和一些编译器正在做的事情。
答案 0 :(得分:0)
绝对有可能利用某些相同类型的数组技术来提高网络组装的效率。但是,如代码片段所示,天真地用类型化数组替换JS标准数组不会在例如Chrome上以任何主要方式影响性能。 (实际上,在该示例中,观察到的效果是负面的)
let a = [];
let A = new Float64Array(1000000)
let b = [0, 0, 0, 0, 0, 0, 0, 0];
let B = new Float64Array(8);
for (let i = 0; i < 1000000; i++) {
let v = Math.sqrt(1+i)
a[i] = v;
A[i] = v;
}
tn = performance.now()
for (let n = 0; n < 500; n++) {
for (let i = 0; i < 999999; i++) {
B[i % 8] = B[i % 8] + (A[i] * A[i])
}
}
let SUM = 0;
for (let i = 0; i < 8; i++) {
SUM = SUM + B[i];
}
console.log(" TYPED ARRAY", performance.now() - tn, SUM)
tn = performance.now()
for (let n = 0; n < 500; n++) {
for (let i = 0; i < 999999; i++) {
b[i % 8] = b[i % 8] + (a[i] * a[i])
}
}
let sum = 0;
for (let i = 0; i < 8; i++) {
sum = sum + b[i];
}
console.log("standard array", performance.now() - tn, sum)