views:

168

answers:

2

Does the VB.NET 2008 compiler selectively optimize Select Case Statements?

For example, a Select Case Statement with a sufficient quantity of integer cases could be organized as a binary search.

I ask this because I am curious whether or not I should opt for a Select Case in place of If Statements with multiple Else If's where integers or other basic data types are being compared.

+1  A: 

In general, you should worry about code readability and maintainability over and above this sort of performance micro-optimisation.

Unless this switch is inside a loop which is being executed 1000's (millions?) of times, this is highly unlikely to be the performance bottlebeck of your app.

Make a decision and stick with it for consistency's sake. In general, don't performance tune code until you have analysed where your performance bottlenecks are.

See also this question.

Sam Meldrum
+1  A: 

Select Case with 40 choices is more than 10x faster than a string of 40 ElseIf statements. That is more improvement than you would expect to get with a binary search. I would guess that a simple integer Select Case uses whatever the modern machine code equivalent of a computed goto statement is -- it compiles so that it branches directly to the proper "case" based on the value of the integer.

I think Select Case is the one to go with.

xpda