gpt4 book ai didi

javascript - JS - 如果只有 1 个条件,检查顺序会影响性能吗?

转载 作者:搜寻专家 更新时间:2023-11-01 04:15:39 25 4
gpt4 key购买 nike

我正在做一个项目,这个问题突然出现在我的脑海中。我不确定是否已经有这样的帖子,但我没有找到。

假设我有这个:

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 语句都必须检查一次条件,如果操作的频率已知(例如,我知道 else 部分最常执行)。 检查“非条件”会使代码运行得更快还是检查“非条件”甚至不会影响性能?(假设我正在构建一个复杂的 node.js 服务器,它具有许多这些类型的功能。)

附加问题:大多数编程语言在理论上也做同样的事情吗?

我只是想知道它是否会影响性能(实际上或理论上)。

最佳答案

简答:不,它不会影响计算时间。

长答案:大多数 Javascript 引擎(Spider Monkey 和 V8)在内部使用 Just in Time compiler这将在运行时消除这些差异。

在低级编程语言(阅读:C/C++ 等)中,如果您能够防止 branch mis-predicts,您可能有所收获。 ,如 C++ code ,但只有在进行内核编程或进行极端的微优化时,收获通常才值得。


从理论上讲,它是否有所作为取决于您正在查看哪种编译器。如果您正在寻找可以从代码跟踪中学习的编译器,例如一个即时编译器,那么如果某个代码包是热点或不是热点就会有所不同。如果您正在查看静态编译器,这可能意味着编译器可能在其中一种情况下使用较少的时钟周期(ifelse) 通过阻止 jmp,但这取决于编译器的实现。

关于javascript - JS - 如果只有 1 个条件,检查顺序会影响性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31097315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com