JS-如果条件只有1,那么检查顺序会影响性能吗
JS - If condition with only 1 else, does checking order affect performance?
我正在做一个项目,这个问题突然出现在我的脑海中。我不确定是否已经有这样的帖子,但我没有找到。
假设我有这个:
function checks(s) {
if (s.length == 4 && s[0] == "a") {
//action
} else {
//other action
}
}
checks("a001");
checks("else");
checks("else");
checks("else");
这个:
function checkb(b) {
if (b) {
//action
} else {
//other action
}
}
checkb(true); //Suppose i'm passing these through another function
checkb(false); //so it makes sense for me doing these
checkb(false);
checkb(false);
由于无论哪种方式,if语句都必须检查一次条件,操作的频率是否已知(例如,我知道其他部分最常执行)检查"not conditions"是否会使代码运行得更快,或者检查"not condition"是否甚至不会影响性能(假设我正在构建一个复杂的node.js服务器,该服务器具有许多此类功能。)
附加问题:理论上大多数编程语言也会这样做吗
我只是想知道它是否会影响性能(实际或理论上)。
简短回答:否,它不会影响计算时间。
长答案:大多数Javascript引擎(Spider Monkey和V8)在内部使用实时编译器,该编译器将在运行时消除这些差异。
在低级别编程语言(读作:C/C++等)中,如果能够防止分支预测错误,您可能会获得一些东西,比如在C++代码中,但只有当您正在进行内核编程或进行极端的微优化时,这种增益通常才是值得的。
从理论上讲,它是否有影响取决于你所关注的编译器是什么类型的。如果你正在关注一个可以从代码跟踪中学习的编译器,例如实时编译器,那么如果某个代码包是否是热点,它就会产生影响。如果您查看的是静态编译器,这可能意味着编译器在其中一种情况下(if
或else
)可以通过阻止jmp
来减少一个时钟周期,但这将取决于编译器实现。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 如何检查管道中未定义的项目
- ajax请求的顺序总是不同的
- 按照选项卡索引的顺序循环一个jQuery选择
- 主干-不管怎样,检查事件以前是否绑定过
- 使用javascript检查多个输入值,并在1次检查中标记多个输入框
- 如何检查数组是否包含不同顺序的字符串
- 按使用 jquery 检查复选框的顺序显示文本
- 检查打乱顺序的数组元素
- 检查点击顺序不起作用
- 检查按钮是否按一定顺序点击JS
- Javascript:检查多个数组值是否相同(顺序很重要)
- 使用jQuery检查四分之一是否按顺序排列
- 检查javascript中数组的连续顺序
- 网页:按钮检查自己(HTML页面)和打开下一个HTML页面按字母顺序位于同一文件夹
- JS-如果条件只有1,那么检查顺序会影响性能吗
- 检查文件是否存在并按代码顺序显示
- 按特定顺序检查数组中的多个值
- 如何通过列表项id检查UL的顺序