繁体   English   中英

嵌套 if 或 switch case 语句

[英]Nested if or switch case statement

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

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

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

另请参阅IF-ELSE 和 SWITCH 有什么区别? (可能重复)以及切换 if-else 语句的优点 有趣的是,switch 的支持者写道

在最坏的情况下,编译器将生成与 if-else 链相同的代码,因此您不会丢失任何内容。 如果有疑问,请将最常见的情况首先放入 switch 语句中。

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

如果您有超过 2-3 次比较,则“切换”否则“如果”

尝试在 go 之前应用一些模式来切换类似策略...

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM