Ho generato due matrici di 1000
x 1000
:
Prima matrice: O
e #
.
Seconda matrice: O
e B
.
Utilizzando il seguente codice, il completamento della prima matrice ha richiesto 8,52 secondi:
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("");
}
Con questo codice, il completamento della seconda matrice ha richiesto 259.152 secondi:
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("");
}
Qual è la ragione dietro i tempi di esecuzione drammaticamente diversi?
Come suggerito nei commenti, la stampa System.out.print("#");
richiede solo 7.8871
pochi secondi, mentre System.out.print("B");
dà still printing...
.
Come altri che hanno sottolineato che funziona normalmente per loro, ho provato Ideone.com per esempio, ed entrambi i pezzi di codice vengono eseguiti alla stessa velocità.
Condizioni di prova:
- Ho eseguito questo test da Netbeans 7.2 , con l'output nella sua console
- Ho usato
System.nanoTime()
per le misurazioni