在JavaScript性能方面模拟结构处理的C数组
mimic C array of struct processing in JavaScript performancewise
在C中,可以非常有效地处理大量混合类型的数据记录。例如,计算一个记录作为另一个类似的函数:
struct TypeA{
int i;
boolean b;
}
struct TypeA{
long int l;
float f;
}
struct TypeA as[1000];
struct TypeB bs[1000];
for(int i=0; i<1000; i++)
bs[i]=someFunction(as[i]);
as
将被线性读取,bs
将被类似地写入,因此很容易利用CPU的内存或处理瓶颈,而不会有太多开销。
在JavaScript中,按顺序创建的JS对象可能(但不太可能?)会生成优化的代码。另一方面,数据可以被拆分为更多所使用类型的数组,如Float32Array
等,并且someFunction
将不得不读取和写入两个以上的数组,从而产生一些更顺序的存储器访问流。
有没有其他有效的方法?
在Javascript中,我写了这样的C代码:
var as =new Array(1000),
bs =new Array(1000);
/* struct TypeA */
var TypeA = function(x,y) {
this.i = x;
this.b = y;
return this;
}
var TypeB = function(x,y) {
this.l = x;
this.f = y;
}
var someFunction = function(a,b) {
// doing something ....
b.l = a.i*2;
b.f = a.b?0.0:100.0;
}
/** init array first**/
for(var i=0; i<1000; i++) {
as[i] = new TypeA(i+1, i & 1);
bs[i] = new TypeB(0,0.0);
}
for(var i=0; i<1000; i++)
someFunction(as[i],bs[i]);
我认为我能写得更有效率。
相关文章:
- 在JavaScript中处理数组和对象时需要帮助
- Emberjs#每个循环不处理数组数据
- 如何在angular js/HTML中处理数组
- 按子数组处理数组
- 处理数组的 Ajax 表单
- 使用 Google Apps 脚本处理数组中输入元素中的多个文件
- JavaScript for in - 从主对象获取、组合和处理数组
- 在 JavaScript 中处理数组中的最后一项
- 处理数组中的元素,考虑到元素的索引,它们的长度不同
- ngResource + 401 错误处理:数组或对象的预期响应
- 使用 join() 批量处理数组
- JavaScript提取并处理数组中的值
- 用于处理数组的Javascript
- 承诺获取和处理数组
- 类似sql的javascript库,用于处理数组和对象
- 在javascript和jquery中处理数组中的对象
- 尝试训练如何处理数组
- 使用reduce方法处理数组元素
- js serialize()可以处理数组字段名吗?
- Jquery美元.每个循环处理数组