在JavaScript performancewise中模拟结构处理的C数组
在C语言中,可以得到大量混合类型的数据记录,并进行有效的处理。例如,计算一条记录作为另一条记录的函数,如:在JavaScript performancewise中模拟结构处理的C数组,javascript,arrays,struct,Javascript,Arrays,Struct,在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]);
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]);
结构类型A{
int i;
布尔b;
}
结构类型A{
长整数;
浮动f;
}
结构类型A为[1000];
结构类型B bs[1000];
对于Javascript中的(inti=0;i,我编写了如下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]);
var as=新阵列(1000),
bs=新阵列(1000);
/*结构类型A*/
var TypeA=函数(x,y){
i=x;
这个。b=y;
归还这个;
}
变量类型B=函数(x,y){
这个。l=x;
这个。f=y;
}
var someFunction=函数(a,b){
//做点什么。。。。
b、 l=a.i*2;
b、 f=a.b?0.0:100.0;
}
/**先初始化数组**/
对于(var i=0;这是一种非常直接的方法,JavaScript运行时可能会对其进行很好的优化。但是,我想它相对于C等价物来说仍然非常低效。如果我有一些空闲时间,我将尝试这方面的基准测试。也许查看从C或其他语言编译到asm.js的代码会提供更精确的线索……但是,正如m、 js允许使用真正的整数类型,而js不允许,因此结果可能不适用。