|
The Java Specialists' Newsletter
Issue 070b 2003-05-18
Category:
Performance
Java version: Multi-Dimensional Arrays - Creation Performanceby Dr. Heinz M. Kabutz
One of our subscribers, Martin Schulte from Germany, sent
me a correction for yesterday's newsletter, and I do not
want to take too long before publishing it, since it is
rather significant.
Martin discovered that the biggest difference in performance
is the creation of the multi-dimensional arrays.
Mark Grand also thought I should point out that there are
no multi-dimensional arrays in Java, only arrays of arrays.
This is the reason why we have a difference in performance
when we create these arrays of arrays.
The difference in creation times can be seen in this small
test example, I have left out the syntax highlighting to see
your reaction ;-)
public class CreationTimes {
private final static int ITERATIONS = 1000000;
private final static int NUM_BINS = 20;
private final static int THE_OTHER_DIM = 4;
public static void main(String[] args) {
testMultiArray();
testMultiArray2();
testSingleArray();
}
private static void testMultiArray() {
long time = -System.currentTimeMillis();
for (int repeat = 0; repeat < ITERATIONS; repeat++) {
int[][] aTwoDim = new int[NUM_BINS][THE_OTHER_DIM];
}
time += System.currentTimeMillis();
System.out.println("Time Elapsed for [][" + THE_OTHER_DIM + "] - " +
time);
}
private static void testMultiArray2() {
long time = -System.currentTimeMillis();
for (int repeat = 0; repeat < ITERATIONS; repeat++) {
int[][] aTwoDim = new int[THE_OTHER_DIM][NUM_BINS];
}
time += System.currentTimeMillis();
System.out.println("Time Elapsed for [" + THE_OTHER_DIM + "][] - " +
time);
}
private static void testSingleArray() {
long time = -System.currentTimeMillis();
for (int repeat = 0; repeat < ITERATIONS; repeat++) {
int[] aOneDim = new int[NUM_BINS * THE_OTHER_DIM];
}
time += System.currentTimeMillis();
System.out.println("Time Elapsed for [] - " + time);
}
}
The result of running this code is:
Time Elapsed for [][4] - 9653
Time Elapsed for [4][] - 2394
Time Elapsed for [] - 671
On another note, I will be joining an elite group of authors
on Bill Venners' Weblogs. The others on the list are really
quite famous, so I am there to bring some balance :-) Check
out the artima website on http://www.artima.com,
I should be there within a week or
so. I plan to use that forum as a supplement to my newsletter,
and it will give you an opportunity to chat back publicly
as well.
Kind regards
Heinz
Performance Articles
Related Java Course
Discuss at The Java Specialist Club
|