首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Go开关与if-else效率

Go开关与if-else效率
EN

Stack Overflow用户
提问于 2013-05-24 08:14:22
回答 3查看 8K关注 0票数 14

在Go中,switches比C(和C++)更灵活,因为它们可以处理布尔表达式的情况,并似乎完全替换大型else-if梯子,特别是使用默认的switch {...}块。

代码语言:javascript
运行
复制
switch {
    case x < 5 && y > 2:
        //...
    case y == 1 || x > 2:
        //...
    default:
}

在Go中使用switch比使用else-if有效率优势吗?switch的灵活性似乎会失去效率的提升,这仅仅是由编译器来找出它,看看它是否可以制作跳转表?

ifelse相比,使用switch是否具有性能优势

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-24 08:19:42

除非所有的case都是整型常量,否则就无法将switch转换为跳转表。

因此,在最好的情况下,如果只使用整数常量,Go的switch可能等同于C++的switch,否则它的效率不会比if/else更高。

票数 14
EN

Stack Overflow用户

发布于 2013-05-24 08:16:15

这完全取决于编译器来找出它并为您的代码选择一个好的实现策略。通过请求编译器输出的汇编列表,您始终可以找出编译器正在生成的代码。请参阅Go编译器的-S option

票数 12
EN

Stack Overflow用户

发布于 2013-05-24 08:18:35

这肯定与您的应用程序性能无关。可能还有其他更复杂的情况,您可以在其中提高性能。例如,保存一个SQL查询可能需要100万个if/else/switch。

不要过于担心这样的细节,专注于更高层次的东西。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16725921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档