For more information regarding the security incident at F5, the actions we are taking to address it, and our ongoing efforts to protect our customers, click here.

Forum Discussion

morris's avatar
morris
Icon for Nimbostratus rankNimbostratus
Oct 06, 2020
Solved

iRules command: Switch vs If

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?

  • 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.

4 Replies

  • 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.

  • morris's avatar
    morris
    Icon for Nimbostratus rankNimbostratus

    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?

    • Dario_Garrido's avatar
      Dario_Garrido
      Icon for Noctilucent rankNoctilucent

      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.