condition priority in if-else for efficiency












1














I would like to know if I have if-else or if-elif-elif-....-else condition like below:



if conditionA:
do A
elif conditionB:
do B
elif conditionC:
do C
...
...
...
else:
do z


Q1. If I already know that my condition resolve in conditionC for 99% of time, putting that condition as first one (instead of conditionA) would make my code more efficient?



Q2. Similarly, should I prioritize my statements that way, if Q1 is true?



Apologies if the question has already been asked. I might not have found the proper vocabulary to search for this.



Thank You.










share|improve this question






















  • Have you tried testing this yourself?
    – juanpa.arrivillaga
    Nov 23 '18 at 5:56










  • Q1 - yes. Q2 - yes.
    – b-fg
    Nov 23 '18 at 5:57
















1














I would like to know if I have if-else or if-elif-elif-....-else condition like below:



if conditionA:
do A
elif conditionB:
do B
elif conditionC:
do C
...
...
...
else:
do z


Q1. If I already know that my condition resolve in conditionC for 99% of time, putting that condition as first one (instead of conditionA) would make my code more efficient?



Q2. Similarly, should I prioritize my statements that way, if Q1 is true?



Apologies if the question has already been asked. I might not have found the proper vocabulary to search for this.



Thank You.










share|improve this question






















  • Have you tried testing this yourself?
    – juanpa.arrivillaga
    Nov 23 '18 at 5:56










  • Q1 - yes. Q2 - yes.
    – b-fg
    Nov 23 '18 at 5:57














1












1








1







I would like to know if I have if-else or if-elif-elif-....-else condition like below:



if conditionA:
do A
elif conditionB:
do B
elif conditionC:
do C
...
...
...
else:
do z


Q1. If I already know that my condition resolve in conditionC for 99% of time, putting that condition as first one (instead of conditionA) would make my code more efficient?



Q2. Similarly, should I prioritize my statements that way, if Q1 is true?



Apologies if the question has already been asked. I might not have found the proper vocabulary to search for this.



Thank You.










share|improve this question













I would like to know if I have if-else or if-elif-elif-....-else condition like below:



if conditionA:
do A
elif conditionB:
do B
elif conditionC:
do C
...
...
...
else:
do z


Q1. If I already know that my condition resolve in conditionC for 99% of time, putting that condition as first one (instead of conditionA) would make my code more efficient?



Q2. Similarly, should I prioritize my statements that way, if Q1 is true?



Apologies if the question has already been asked. I might not have found the proper vocabulary to search for this.



Thank You.







python python-3.x performance if-statement big-o






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 23 '18 at 5:55









Jay Patel

463




463












  • Have you tried testing this yourself?
    – juanpa.arrivillaga
    Nov 23 '18 at 5:56










  • Q1 - yes. Q2 - yes.
    – b-fg
    Nov 23 '18 at 5:57


















  • Have you tried testing this yourself?
    – juanpa.arrivillaga
    Nov 23 '18 at 5:56










  • Q1 - yes. Q2 - yes.
    – b-fg
    Nov 23 '18 at 5:57
















Have you tried testing this yourself?
– juanpa.arrivillaga
Nov 23 '18 at 5:56




Have you tried testing this yourself?
– juanpa.arrivillaga
Nov 23 '18 at 5:56












Q1 - yes. Q2 - yes.
– b-fg
Nov 23 '18 at 5:57




Q1 - yes. Q2 - yes.
– b-fg
Nov 23 '18 at 5:57












2 Answers
2






active

oldest

votes


















3














Q.1 and Q.2: Yes



According to Python documentation




An if … elif … elif … sequence is a substitute for the switch or case
statements found in other languages.




which means as soon as code executes a True condition, it will exit the if … elif … elif … sequence.






share|improve this answer





























    1














    You see these conditions take O(1) time, you can say it is negligible to compared to the other code you have written along with it, so like if you have a code along with it which have two nested loops O(n^2) then the conditions are negligible time taking compared to your overall algo.



    Moreover, this tells you the estimated complexity.



    But other wise i'd say you must put it to condition A, because what you put in these conditions may have their respective time complexities.



    suppose you have sub-string search using in operator in python,
    it goes like.



    st = 'hello' * (2 ** 999) # hellohellohellohe...    

    if 'hey' in st:
    print('hey, I found it')

    else:
    print('well..')


    it takes around θ(n) and O(MN), where m is string and n is sub-string to be compared.



    have a look at this python substring.



    So, it wrap this up, the preferred way would be to it on condition A.






    share|improve this answer





















      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53441300%2fcondition-priority-in-if-else-for-efficiency%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      3














      Q.1 and Q.2: Yes



      According to Python documentation




      An if … elif … elif … sequence is a substitute for the switch or case
      statements found in other languages.




      which means as soon as code executes a True condition, it will exit the if … elif … elif … sequence.






      share|improve this answer


























        3














        Q.1 and Q.2: Yes



        According to Python documentation




        An if … elif … elif … sequence is a substitute for the switch or case
        statements found in other languages.




        which means as soon as code executes a True condition, it will exit the if … elif … elif … sequence.






        share|improve this answer
























          3












          3








          3






          Q.1 and Q.2: Yes



          According to Python documentation




          An if … elif … elif … sequence is a substitute for the switch or case
          statements found in other languages.




          which means as soon as code executes a True condition, it will exit the if … elif … elif … sequence.






          share|improve this answer












          Q.1 and Q.2: Yes



          According to Python documentation




          An if … elif … elif … sequence is a substitute for the switch or case
          statements found in other languages.




          which means as soon as code executes a True condition, it will exit the if … elif … elif … sequence.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 23 '18 at 6:33









          ameydev

          564




          564

























              1














              You see these conditions take O(1) time, you can say it is negligible to compared to the other code you have written along with it, so like if you have a code along with it which have two nested loops O(n^2) then the conditions are negligible time taking compared to your overall algo.



              Moreover, this tells you the estimated complexity.



              But other wise i'd say you must put it to condition A, because what you put in these conditions may have their respective time complexities.



              suppose you have sub-string search using in operator in python,
              it goes like.



              st = 'hello' * (2 ** 999) # hellohellohellohe...    

              if 'hey' in st:
              print('hey, I found it')

              else:
              print('well..')


              it takes around θ(n) and O(MN), where m is string and n is sub-string to be compared.



              have a look at this python substring.



              So, it wrap this up, the preferred way would be to it on condition A.






              share|improve this answer


























                1














                You see these conditions take O(1) time, you can say it is negligible to compared to the other code you have written along with it, so like if you have a code along with it which have two nested loops O(n^2) then the conditions are negligible time taking compared to your overall algo.



                Moreover, this tells you the estimated complexity.



                But other wise i'd say you must put it to condition A, because what you put in these conditions may have their respective time complexities.



                suppose you have sub-string search using in operator in python,
                it goes like.



                st = 'hello' * (2 ** 999) # hellohellohellohe...    

                if 'hey' in st:
                print('hey, I found it')

                else:
                print('well..')


                it takes around θ(n) and O(MN), where m is string and n is sub-string to be compared.



                have a look at this python substring.



                So, it wrap this up, the preferred way would be to it on condition A.






                share|improve this answer
























                  1












                  1








                  1






                  You see these conditions take O(1) time, you can say it is negligible to compared to the other code you have written along with it, so like if you have a code along with it which have two nested loops O(n^2) then the conditions are negligible time taking compared to your overall algo.



                  Moreover, this tells you the estimated complexity.



                  But other wise i'd say you must put it to condition A, because what you put in these conditions may have their respective time complexities.



                  suppose you have sub-string search using in operator in python,
                  it goes like.



                  st = 'hello' * (2 ** 999) # hellohellohellohe...    

                  if 'hey' in st:
                  print('hey, I found it')

                  else:
                  print('well..')


                  it takes around θ(n) and O(MN), where m is string and n is sub-string to be compared.



                  have a look at this python substring.



                  So, it wrap this up, the preferred way would be to it on condition A.






                  share|improve this answer












                  You see these conditions take O(1) time, you can say it is negligible to compared to the other code you have written along with it, so like if you have a code along with it which have two nested loops O(n^2) then the conditions are negligible time taking compared to your overall algo.



                  Moreover, this tells you the estimated complexity.



                  But other wise i'd say you must put it to condition A, because what you put in these conditions may have their respective time complexities.



                  suppose you have sub-string search using in operator in python,
                  it goes like.



                  st = 'hello' * (2 ** 999) # hellohellohellohe...    

                  if 'hey' in st:
                  print('hey, I found it')

                  else:
                  print('well..')


                  it takes around θ(n) and O(MN), where m is string and n is sub-string to be compared.



                  have a look at this python substring.



                  So, it wrap this up, the preferred way would be to it on condition A.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 23 '18 at 6:20









                  P.hunter

                  6171624




                  6171624






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.





                      Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                      Please pay close attention to the following guidance:


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53441300%2fcondition-priority-in-if-else-for-efficiency%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      Catalogne

                      Violoncelliste

                      Héron pourpré