javascript - 所有变量的JavaScript类型数组?
问题描述
我正在为一个研究项目编写一些代码。我正在用 javascript 编写它,因为我希望能够在任何地方运行它,并且能够在我完成项目时将它发布到网络上。但我还需要重新运行此代码数十万次,并将结果作为研究项目的一部分查看,因此我希望它高效。对于项目的 webgl 部分,我使用数组缓冲区和类型化数组。
对所有 javascript 变量使用数组缓冲区或类型化数组会给普通 javascript 带来任何性能改进吗?
从我读过的内容来看,这听起来像是 Web 组装和一些转译器正在做的事情。
解决方案
绝对有可能利用一些相同类型的数组技术来推动 web 组装。然而,从代码片段中可以看出,天真地用类型化数组替换 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)
推荐阅读
- java - webhdfs create using kerberos rest template HttpServerErrorException: 500 Internal Server Error
- azure-service-fabric - Azure Service Fabric 从 Visual Studio 发布升级 - PowerShell 脚本错误
- google-cloud-datastore - Datastore: Failed transactions and rollbacks: What happens if rollback is not called or fails?
- android - json异常:值
我正在尝试在 android 中创建一个表单并将数据插入数据库。我将它托管在 000webhost 上,并使用 PHPMyAdmin , MYSQL 作为数据库。当我尝试单击保存按钮时,我得到一个带有异常:jsone
- javascript - 设置文本字段时出错,setValue 不是函数。Extjs6
- ruby-on-rails - 为什么我的记录器信息不适用于服务类,但在控制器中却可以?
- r - 创建具有范围的频率表
- shell - $SIG{'ALRM'} 在 Perl 中做了什么
- regex - 使用正则表达式提取字符串
- laravel - 使用现有模型的 Laravel 查询