嵌套 if 或 switch case 语句

发布于 2024-11-10 18:11:15 字数 63 浏览 2 评论 0原文

从优化代码运行时间的角度来看,哪里使用“嵌套if”语句以及何时使用“switch case”语句是否有经验法则?

From the point of view of optimizing the code run time, is there a thumb rule for where to use "nested if" statement and when to use "switch case" statements ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

叹沉浮 2024-11-17 18:11:15

我怀疑您是否会找到一个现实生活中的应用程序,其中嵌套 if 和 switch case 之间的差异甚至值得衡量。磁盘访问、Web 访问等需要花费很多数量级的时间。

选择最容易阅读和调试的内容。

另请参阅 IF-ELSE 和 SWITCH 之间有什么区别?< /a> (可能重复)以及 切换 if-else 的优点声明。有趣的是,switch 的支持者写道

在最坏的情况下,编译器将
生成与 if-else 相同的代码
链条,这样你就不会丢失任何东西。如果
有疑问提出最常见的情况
首先进入 switch 语句。

在最好的情况下,优化器可能
找到更好的方法来生成
代码。编译器所做的常见事情是
构建二叉决策树
(保存比较和跳转
平均情况)或简单地构建一个
跳转表(无需比较即可工作
全部)。

I doubt you will ever find a real-life application where the difference between a nested if and a switch case is even worth measuring. Disk access, web access, etc. take many many orders of magnitude more time.

Choose what is easiest to read and debug.

Also see What is the difference between IF-ELSE and SWITCH? (possible duplicate) as well as Advantage of switch over if-else statement. Interestingly, a proponent of switch writes

In the worst case the compiler will
generate the same code as a if-else
chain, so you don't lose anything. If
in doubt put the most common cases
first into the switch statement.

In the best case the optimizer may
find a better way to generate the
code. Common things a compiler does is
to build a binary decission tree
(saves compares and jumps in the
average case) or simply build a
jump-table (works without compares at
all).

看海 2024-11-17 18:11:15

如果您有超过 2-3 个比较
然后“切换”
否则“如果”

在你去切换策略之前尝试应用一些模式......

If you have more than 2-3 comparisons
then "switch"
else "if"

try to apply some patterns before you go to switch like strategy...

纸短情长 2024-11-17 18:11:15

我认为这对于使用任何一种方法实现的决策结构都不会产生任何影响。您的编译器很可能会在可执行文件中生成相同的指令。

I don't believe it will make any difference for a decision structure that could be implemented using either method. It's highly likely that your compiler would produce the same instructions in the executable.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文