gpt4 book ai didi

c++ - Switch case 语句如何在内部实现或工作?

转载 作者:IT老高 更新时间:2023-10-28 21:41:10 25 4
gpt4 key购买 nike

我在某处读到 switch 语句使用“二进制搜索”或一些排序技术来准确选择正确的大小写,与 else-if 阶梯相比,这提高了它的性能。

此外,如果我们按顺序给出案例,开关是否工作得更快?是这样吗?您能对此提出宝贵的建议吗?

我们讨论了here大致相同,并计划作为问题发布。

最佳答案

switch 语句如何在代码中实现实际上取决于编译器。

不过,我的理解是在合适的时候(也就是比较密集的情况),使用跳转表。

这意味着类似:

switch(i) {
case 0: doZero(); break;
case 1: doOne();
case 2: doTwo(); break;
default: doDefault();
}

最终会被编译成类似的东西(可怕的伪汇编器,但我希望它应该很清楚)。

load i into REG
compare REG to 2
if greater, jmp to DEFAULT
compare REG to 0
if less jmp to DEFAULT
jmp to table[REG]
data table
ZERO
ONE
TWO
end data
ZERO: call doZero
jmp END
ONE: call doOne
TWO: call doTwo
jmp END
DEFAULT: call doDefault
END:

如果不是这种情况,还有其他可能的实现允许某种程度的“优于一系列条件”。

关于c++ - Switch case 语句如何在内部实现或工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14067547/

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