This importance of each loop is quite different. For example,
the fist loop is a consing loop, that accounts for about 80% of the
time As show in the following exhibit:
public class PerformanceTester0 {
private int amount;
private static int NOBJECTS = 500000;
public void addAmount(int val) { amount += val; }
public int getAmount() { return amount; }
public static void main(String[] args) {
for (int i = 0; i < 9; i++)
runTest(); }
public static void runTest() {
long startTime = 0;
long endTime = 0;
int sum = 0;
startTime = System.currentTimeMillis();
// 70 msec 3.8%
PerformanceTester0[] ptarr = new PerformanceTester0[NOBJECTS];
// 1493 msec 81.5%
for (int i = 0; i < NOBJECTS; i++)
ptarr[i] = new PerformanceTester0();
// 210 msec 11.5%
for (int i = 0; i < NOBJECTS; i++)
ptarr[i].addAmount(i);
// 129 msec 7.0%
for (int i = 0; i < NOBJECTS; i++)
sum += ptarr[i].getAmount();
endTime = System.currentTimeMillis();
System.out.println("Elapsed time in millisconds for "
+ NOBJECTS + " objects; " + (endTime - startTime));
System.out.println("Objects per millisecond: " +
NOBJECTS/(endTime - startTime));
}
}
d:\silk4\silkweb\doc\Scheme2000>javac PerformanceTester0.java
javac PerformanceTester0.java
d:\silk4\silkweb\doc\Scheme2000>java PerformanceTester0
Elapsed time in millisconds for 500000 objects; 71
Elapsed time in millisconds for 500000 objects; 70
Elapsed time in millisconds for 500000 objects; 70
Elapsed time in millisconds for 500000 objects; 70 <-
Elapsed time in millisconds for 500000 objects; 70
d:\silk4\silkweb\doc\Scheme2000>javac PerformanceTester0.java
Elapsed time in millisconds for 500000 objects; 1702
Elapsed time in millisconds for 500000 objects; 1603
Elapsed time in millisconds for 500000 objects; 1582
Elapsed time in millisconds for 500000 objects; 1563 <-
Elapsed time in millisconds for 500000 objects; 1562
d:\silk4\silkweb\doc\Scheme2000>javac PerformanceTester0.java
Elapsed time in millisconds for 500000 objects; 1732
Elapsed time in millisconds for 500000 objects; 1732
Elapsed time in millisconds for 500000 objects; 1712
Elapsed time in millisconds for 500000 objects; 1703 <-
Elapsed time in millisconds for 500000 objects; 1702
d:\silk4\silkweb\doc\Scheme2000>javac PerformanceTester0.java
Elapsed time in millisconds for 500000 objects; 1853
Elapsed time in millisconds for 500000 objects; 1842
Elapsed time in millisconds for 500000 objects; 1843
Elapsed time in millisconds for 500000 objects; 1832 <-
Elapsed time in millisconds for 500000 objects; 1823
*/
The Problem