VB.NET 2008编译器是否有选择地优化Select Case Statements?
例如,可以将具有足够数量的整数个案的Select Case语句组织为二进制搜索。
我问这个是因为我很好奇我是否应该选择一个Select Case代替If具有多个Else的语句If如果要比较整数或其他基本数据类型。
答案 0 :(得分:2)
一般而言,除了这种性能微优化之外,您应该担心代码可读性和可维护性。
除非此开关位于正在执行1000(数百万?)次的循环内,否则这不太可能成为您应用的性能瓶颈。
做出决定并坚持下去以保持一致性。通常,在分析性能瓶颈的位置之前,不要对性能进行调优。
答案 1 :(得分:1)
Select Case
比40个ElseIf
语句的字符串快10倍以上。这比使用二进制搜索所期望的更多改进。我猜想一个简单的整数Select Case
使用与计算的goto语句相当的现代机器代码 - 它编译使得它根据整数的值直接分支到正确的“case”。
我认为Select Case
是最合适的。