Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript中的代码效率和速度比较-赋值与条件检查_Javascript_Performance - Fatal编程技术网

javascript中的代码效率和速度比较-赋值与条件检查

javascript中的代码效率和速度比较-赋值与条件检查,javascript,performance,Javascript,Performance,我有一个用javascript编写的计时器对象,我的目标是使它尽可能高效、快速,从而尽可能准确 我关心的一个问题与一个具体的案例有关,这个案例通常可以应用于所有的编码方式,我确信以前有人问过我,我只是不确定在搜索它时使用什么术语 我的问题是这两种情况中哪一种更快/更有效 案例1:在代码的重复部分为变量赋值,即使您知道该值只需要赋值一次 案例2:检查变量的值,从而有条件地分配它 function runOnce(){ timer.someValue = { //some object...

我有一个用javascript编写的计时器对象,我的目标是使它尽可能高效、快速,从而尽可能准确

我关心的一个问题与一个具体的案例有关,这个案例通常可以应用于所有的编码方式,我确信以前有人问过我,我只是不确定在搜索它时使用什么术语

我的问题是这两种情况中哪一种更快/更有效

案例1:在代码的重复部分为变量赋值,即使您知道该值只需要赋值一次

案例2:检查变量的值,从而有条件地分配它

function runOnce(){
    timer.someValue = { //some object...};
}


function someRepeatedFunction(){
    timer.someValue = null;

    //vs

    if(timer.someValue){
        timer.someValue = null;
    }
}
哪种情况更快?

微观优化#1

如果您坚持使用条件检查,我将绕过使用
==
操作符(我认为Javascript会自动使用该操作符),转而使用
==
操作符

identity
==
运算符的行为与equality
==
运算符的行为相同,只是没有进行类型转换,并且类型必须相同才能视为相等。
==
运算符在进行任何必要的类型转换后将进行相等性比较。
==
运算符不会进行转换,因此,如果两个值的类型不同,则
==
只会返回false。在这种情况下,
===
将更快,并且可能返回与
=
不同的结果。在所有其他情况下,性能将相同

微观优化#2


关于赋值和条件检查之间的选择,在使用全局变量的情况下(如您似乎正在使用的变量),选择赋值似乎是合乎逻辑的。除非您计划在
else
情况下处理案例,否则无需持续检查对象的当前类型或其值

这是微观优化。差别可以忽略不计。你将浪费更多的时间来确定这个问题的答案,而不是通过提高性能来恢复。好吧,我可以理解这一点。在这种情况下,我会选择代码行数较少的选项。尽管如此,出于好奇,如果从理论上确实存在一个明确的答案,我不介意知道它。当然,我正在编写一个计时器,所以我知道我可以只设置一个测试用例,然后实际…计时。@krb686:这就是你应该做的。我目前正在这样做。即使如此,我也看不出有理由投反对票。不知道答案不是一个很好的理由,这是一个合理的问题,也是我的好奇心所在。即使任何人编写的99.9%的代码都不需要这样的准确性,但试图更准确、更高效又有什么害处呢?