2

VB.NET 2008编译器是否有选择地优化Select Case Statements?VB.NET Select Case编译器优化?

例如,具有足够数量的整数个案的Select Case Statement可以组织为二分搜索。

我问这个,因为我很好奇我是否应该选择一个Select Case来代替If语句与多个Else If如果要比较整数或其他基本数据类型。

回答

1

Select Case有40个选项比一串40 ElseIf语句快10倍以上。这比你用二分查找期望得到的改进更大。我猜想一个简单的整数Select Case可以使用计算goto语句的现代机器代码等价物 - 编译它以便它根据整数值直接分支到合适的“case”。

我认为Select Case是一个去。

2

一般来说,您应该担心代码的可读性和可维护性,而不仅仅是这种性能微优化。

除非此开关位于正在执行1000次(数百万次)的循环内,否则这不太可能是您的应用程序的性能瓶颈。

做出决定并坚持一致。一般来说,除非您分析了性能瓶颈,否则不要调优代码。请参阅this question