哪个片段执行得更快/生成更少的代码行?(C++/JavaScript)

Dif*_*nkr 0 javascript c++

其中哪一个在速度方面更有效(生成的代码行数).

var x=obj.mem;
x.do1();
x.do2();
Run Code Online (Sandbox Code Playgroud)

要么

obj.mem.do1();
obj.mem.do2();
Run Code Online (Sandbox Code Playgroud)

我只是用通用模式编写的.具体来说,如果我必须访问成员(或成员的成员),最好将公共部分分配给变量然后使用该变量或直接调用它,如第二种情况所示.

我主要关注的是C++和JavaScript(如果重要的话).谢谢.

编辑 - > PS.I没有问一个共同的答案.我知道Javascript是一种解释器语言,而C++是基于编译器的.我对JavaScript的一点知识都是自学,我们在学校学习了2年的C++(也是Turbo C++),剩下的就是自学.所以,请原谅我的困惑.我期待一般结果,假设构造是有效的并考虑任何可能的变化.无论如何,我的主要疑虑被清除了.谢谢.

结论:JS使用局部变量更快(虽然可以忽略不计),C++可能会优化以获得几乎相同的结果.

谢谢你的所有输入.

Ali*_*aru 7

在JavaScript中,第一个更快.你会认为应该没有太大区别,但我在开发Dreamweaver扩展(他们使用JavaScript)时遇到了这个问题,并且存在巨大差异.

我建议你避免长链.

标杆:

var x = {y:{z:null}};
var start = (new Date).getTime();
for(var i=0;i<1000000;i++){
    x.y.z = i;
}
alert((new Date).getTime()-start);
Run Code Online (Sandbox Code Playgroud)

var x = {y:{z:null}};
var start = (new Date).getTime();
var q = x.y;
for(var i=0;i<1000000;i++){
    q.z = i;
}
alert((new Date).getTime()-start);
Run Code Online (Sandbox Code Playgroud)

第二个在我的Firefox中快了大约10%.但请记住,这是一个极简主义的场景.如果你使用更大的物体和更深层次,差异可能会上升.

当然它确实:

var x = {a:{b:{c:{d:{y:{z:null}}}}}};
var start = (new Date).getTime();
for(var i=0;i<1000000;i++){
    x.a.b.c.d.y.z = i;
}
alert((new Date).getTime()-start);
Run Code Online (Sandbox Code Playgroud)

var x = {a:{b:{c:{d:{y:{z:null}}}}}};
var start = (new Date).getTime();
var q = x.a.b.c.d.y;
for(var i=0;i<1000000;i++){
    q.z = i;
}
alert((new Date).getTime()-start);
Run Code Online (Sandbox Code Playgroud)

是不是可以忽略不计30%?

此致,
Alin