Question

In: Computer Science

C# programming When a loop might execute many times, it becomes increasingly important to consider the...

C# programming

When a loop might execute many times, it becomes increasingly important to consider the number of evaluations that take place. How can considering the order of evaluation of short-circuit operators affect the performance of a loop?

Solutions

Expert Solution

ORDER OF EVALUATION OF SHORT-CIRCUIT OPERATORS AFFECTING PERFORMANCE OF A LOOP

Short-circuit is a method for evaluating logical operators AND and OR. In this, the whole expression can be evaluated to true or false without evaluating all sub expressions.

Considering the following example

if (false && Condition1())   

{       

//inside code won't work in any case   

}  

in the above if clause, Condition1() will not be evaluated because whatever the value of Condition1() the whole expression will be false.If we use & instead of &&, it will execute Condition1() also. So always try to stick with short-circuited version.

&& Vs & or || Vs |

AND, OR operators can be found in the following ways,

  • & ( single ampersand ) – Logical AND operator
  • | ( single pipeline) – Logical OR operator

    Both of these operators are non short-circuit in nature.
  • && ( double ampersand ) – Conditional AND operator
  • || ( double pipeline) – Conditional OR operator

    Both of these are short-circuited operators and collectively knows as Conditional Logical Operators.

Order of Evaluation

Order of execution of any of these operators are from left to right. In the following lines of code,

  1. if(Expression1() && Expression2() && ....)   
  2. { }  

Expression1 will be evaluated first then Expression2 and so on.

How to Use && in C#

Prevent Exceptions

if (array.Count() >= 5 && array[4] % 2 == 1)    

{      

//print message here   

}   

If the && were replaced with &.it will cause Index was outside the bounds of the array exception when array does not contains 5 elements.

Ordering Expressions to Reduce Performance Impact

order of evaluation is from left to right.So if you have a series of operands for && operator as below and each of them are independent on other expressions:

if (Validations() && CheckUserExistance() && ..... && IsAuthorised())   

{       

//Some Operations   

}  

It is better to arrange them in the order of their complexity.

Side Effect

Consider the following example

int i = 0;  

if (true && (++i < 60)) {     

  //code goes here   

}  

//value of i is 1  

if (false && (++i < 60)) {   

    //inside code will not execute   

}   

// value of i remains as 1  

As a result of short circuiting the second operand in the second if clause will not execute, so value of i remains same as before. This effect is called Side effect.

So when we use them, you should be aware of this effect and these effects are seen in rare situations.

Therefore, Short circuited logical operators in C# are && and ||, They are efficient and fast versions of logical operators in C#. So it is a good practice to use them.


Related Solutions

Determine how many times the innermost loop will be iterated when the algorithm segment is implemented...
Determine how many times the innermost loop will be iterated when the algorithm segment is implemented and run. (Assume that m and n are positive integers.) for j := 1 to m     for k := 1 to n         [Statements in body of inner loop.         None contain branching statements that         lead outside the loop.]     next k next j
Job role definition becomes increasingly important as projects grow in size and complexity. One of the...
Job role definition becomes increasingly important as projects grow in size and complexity. One of the tools available to project managers is the RACI chart. Review the following RACI Chart and address the questions: Are there clear delegations of authority? Are there multiple decision points within a single task/process? Would the team have questions about who does what? Is the Accountability level unclear? Task PM Engineer Construction Mgr Consultant Project Sponsor Engineering A A I R C Permits A C...
C programming. Explain by taking a programming example how do while loop is different from while...
C programming. Explain by taking a programming example how do while loop is different from while loop?
12. As the world’s economy becomes increasingly interdependent, various exchange rates between currencies have become important...
12. As the world’s economy becomes increasingly interdependent, various exchange rates between currencies have become important in making business decisions. For many U.S. businesses, the Japanese exchange rate (in yen per U.S. dollar) is an important decision variable. This exchange rate (EXRJ) is shown in the following table by month for a two-year period: (c1p12) Period EXRJ Period EXRJ Year 1 Year 2     M1 127.36     M1 144.98     M2 127.74     M2 145.69     M3 130.55     M3 153.31     M4 132.04     M4 158.46     M5...
6 C++ Questions 13. True/False: every while loop is guaranteed to execute at least one time....
6 C++ Questions 13. True/False: every while loop is guaranteed to execute at least one time. 14. Assume there is a file named "cards.txt" in the current directory which contains 3 ints. Write a code snippet which reads in the three ints and outputs their average (mean) to the screen. 15. True/False: the following function prototype takes an array and its size as its parameters. If you change the value of the array's elements within the function, the changes persist...
How many times will the following crontab entry execute during January 2018? 0 0 * 1...
How many times will the following crontab entry execute during January 2018? 0 0 * 1 1 rm -r /root/backup/* How many times will the following crontab entry execute during January 2018? 0 0 * 1 6 rm -r /root/backup/* List all of the dates the following crontab entry will execute during 2018 (this answer is a little tricky). 0 0 1/10 * 7 rm -r /root/backup/*
Using C programming make one for loop Description For this problem you will be figuring out...
Using C programming make one for loop Description For this problem you will be figuring out if it is more beneficial to pay off your loans first before investing or if you should only make the minimum payments and invest the rest. Some things to pay attention to Interest rates given are annual interests rates but we will be assuming that interest is compounded monthly so the real rates to use will be 1/12 of what we are given We...
C++ , Write an iterative routine that will have 2 queues. Loop for 100 times and...
C++ , Write an iterative routine that will have 2 queues. Loop for 100 times and in the loop roll two die and place the first result into the queue1 and second into queue2. Then dequeue the rolls one at a time from each, printing each pair, and count how many times two rolls either add up to 7 or are doubles (i.e. same value). After the queues are empty, print out the number of 7s and doubles. Assume srand...
Write a RIMS-compatible C-language for-loop that counts the number of times a bit of A is...
Write a RIMS-compatible C-language for-loop that counts the number of times a bit of A is followed by a bit of the opposite parity (01 or 10) and writes the value to B. For example 00100110 has 4 cases: 00100110, 00100110, 00100110, 00100110.
Often times when a company becomes large enough, it will sell off a minority portion of...
Often times when a company becomes large enough, it will sell off a minority portion of their ownership to the public as shares to gain capital. This capital is then reinvested into the company to assist in new projects or expansion in general. For this week's discussion assignment, research how a company's stock is initially appraised when they decide to go public, how it is determined the number of shares are to be distributed and the advantages/disadvantages of common and...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT