在Go中,switches比C(和C++)更灵活,因为它们可以处理布尔表达式的情况,并似乎完全替换大型else-if梯子,特别是使用默认的switch {...}块。
switch {
case x < 5 && y > 2:
//...
case y == 1 || x > 2:
//...
default:
}在Go中使用switch比使用else-if有效率优势吗?switch的灵活性似乎会失去效率的提升,这仅仅是由编译器来找出它,看看它是否可以制作跳转表?
与if和else相比,使用switch是否具有性能优势
发布于 2013-05-24 08:19:42
除非所有的case都是整型常量,否则就无法将switch转换为跳转表。
因此,在最好的情况下,如果只使用整数常量,Go的switch可能等同于C++的switch,否则它的效率不会比if/else更高。
发布于 2013-05-24 08:16:15
这完全取决于编译器来找出它并为您的代码选择一个好的实现策略。通过请求编译器输出的汇编列表,您始终可以找出编译器正在生成的代码。请参阅Go编译器的-S option。
发布于 2013-05-24 08:18:35
这肯定与您的应用程序性能无关。可能还有其他更复杂的情况,您可以在其中提高性能。例如,保存一个SQL查询可能需要100万个if/else/switch。
不要过于担心这样的细节,专注于更高层次的东西。
https://stackoverflow.com/questions/16725921
复制相似问题