Technical Forum
Ask questions. Discover Answers.
cancel
Showing results for 
Search instead for 
Did you mean: 
Custom Alert Banner

iRules command: Switch vs If

morris
Nimbostratus
Nimbostratus

I saw the article in https://devcentral.f5.com/s/articles/irules-101-04-switch saying Switch is a higher performing command and run faster than If command.

Why is that so?

1 ACCEPTED SOLUTION

Yes Morris. That's right.

If-statement with 3 conditions (and default).

if { $bla eq "one" } {
   # do something
} elseif { $bla eq "two" } {
   # do something
} elseif { $bla eq "three" } {
   # do something
} else {
   # do something
}

Switch-statement with 3 conditions (and default).

switch $bla {
  "one" {
    # do something
  }
  "two" {
    # do something
  }
  "three" {
    # do something
  }
  default {
    # do something
  }
}

Don't forget to mark my answer as the best the help me for the contribution.

Regards,

Dario.

Regards,
Dario.

View solution in original post

4 REPLIES 4

Hello Morris.

 

The same article states this:

"Generally, switch commands are faster than if statements due to additional expression evaluations that need to occur with if commands. Since the switch statements only works on a single comparison value, internal optimizations are able to be made in the evaluation process. This likely isn't going to be a big difference for one or two comparisons, but it is measurable when more are made."

 

It's because how the if statement is implemented at machine level.

 

Some reference:

http://www.blackwasp.co.uk/speedtestifelseswitch.aspx

 

Regards,

Dario.

Regards,
Dario.

morris
Nimbostratus
Nimbostratus

hmm, quite interesting article.

So, basically a switch statement with 1 or 2 conditions won't make much difference than if-else statement but more than 5 "switch statement" would be a better choice. Am I understand correctly?

 

Any example code for a switch statement with 5 conditions?

Yes Morris. That's right.

If-statement with 3 conditions (and default).

if { $bla eq "one" } {
   # do something
} elseif { $bla eq "two" } {
   # do something
} elseif { $bla eq "three" } {
   # do something
} else {
   # do something
}

Switch-statement with 3 conditions (and default).

switch $bla {
  "one" {
    # do something
  }
  "two" {
    # do something
  }
  "three" {
    # do something
  }
  default {
    # do something
  }
}

Don't forget to mark my answer as the best the help me for the contribution.

Regards,

Dario.

Regards,
Dario.

Thanks!