Optimization is require mainly for
- Faster execution of program
- Reduce memory load
Pre-increment is better why?:
There are two types of incrementing or decrement, prefix (++x or –x) and postfix (x++ or x–). In the prefix, the value is increased and the new value is returned. In the postfix, the value is increased, but the old value is returned, so it requires a temporary variable for saving new value.
There is no change in performance either use of for or while or increment or decrement but if you know the iteration and it is zero based than it is beneficial to use decrement from the higher value to zero or from the inverse value to zero it will reduce the performance, as per the following example: (Tested in Turbo C – Borland compiler V3.0)
#include <stdio.h> #include <conio.h> #include <time.h> #define MAX 10000000 void main() { clock_t begin, end, s, e; long double i, sum=0; clrscr(); s=clock(); while(!kbhit()) { printf("\nResult for %ld interations in for loop",MAX); begin=clock(); for(i=0; i<MAX; i++); end=clock(); sum+=end-begin; printf("\nTime for i++: %lf", (end-begin)/CLK_TCK); printf("\n\nFollowing are better ways: \n"); begin=clock(); for(i=MAX; --i;); end=clock(); sum+=end-begin; printf("\nTime for --i: %lf", (end-begin)/CLK_TCK); begin=clock(); i=MAX; while(--i); end=clock(); sum+=end-begin; printf("\nTime while --i: %lf", (end-begin)/CLK_TCK); begin=clock(); for(i=-MAX; ++i;); end=clock(); sum+=end-begin; printf("\nTime for ++i: %lf", (end-begin)/CLK_TCK); begin=clock(); i=-MAX; while(++i); end=clock(); sum+=end-begin; printf("\nTime while ++i: %lf", (end-begin)/CLK_TCK); } e=clock(); printf("\nTotal Time: %lf", (e-s)/CLK_TCK); getch(); getch(); } output: Result for 10000000 interations in for loop Time for i++: 2.252747 Following are better ways: Time for --i: 2.087912 Time while --i: 2.032967 Time for ++i: 2.087912 Time while ++i: 2.087912 Result for 10000000 interations in for loop Time for i++: 2.252747 Following are better ways: Time for --i: 2.032967 Time while --i: 2.087912 Time for ++i: 2.087912 Time while ++i: 2.032967 Total Time: 21.043956
In the above program, while loop is continuously running until any key pressed.