I generated two matrices of 1000
x 1000
:
First Matrix: O
and #
.
Second Matrix: O
and B
.
Using the following code, the first matrix took 8.52 seconds to complete:
Random r = new Random();
for (int i = 0; i < 1000; i++) {
for (int j = 0; j < 1000; j++) {
if (r.nextInt(4) == 0) {
System.out.print("O");
} else {
System.out.print("#");
}
}
System.out.println("");
}
With this code, the second matrix took 259.152 seconds to complete:
Random r = new Random();
for (int i = 0; i < 1000; i++) {
for (int j = 0; j < 1000; j++) {
if (r.nextInt(4) == 0) {
System.out.print("O");
} else {
System.out.print("B"); // only line changed
}
}
System.out.println("");
}
What is the reason behind the dramatically different run times?
As suggested in the comments, printing only System.out.print("#");
takes 7.8871
seconds, whereas System.out.print("B");
gives still printing...
.
As others pointed out that it works for them normally, I tried Ideone.com for instance, and both pieces of code execute at the same speed.
Test Conditions:
- I ran this test from Netbeans 7.2, with the output into its console
- I used
System.nanoTime()
for measurements
rand.nextInt(4)==0
toi%4==0
would be better (in terms of avoiding branch prediction speeding up the process) – IronboundSystem.out
, but I think system.out itself will represent that part of the question quite good. – Mason