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.