Wygenerowałem dwie macierze 1000
x 1000
:
Pierwsza matryca: O
i #
.
Druga matryca: O
i B
.
Przy użyciu następującego kodu wykonanie pierwszej matrycy zajęło 8,52 sekundy:
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("");
}
W przypadku tego kodu wykonanie drugiej macierzy zajęło 259,152 sekundy:
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("");
}
Jaki jest powód dramatycznie różnych czasów pracy?
Jak sugerowano w komentarzach, drukowanie System.out.print("#");
zajmuje tylko 7.8871
sekundy, a System.out.print("B");
daje still printing...
.
Jak inni, którzy zauważyli, że działa dla nich normalnie, próbowałem na przykład Ideone.com i oba fragmenty kodu działają z tą samą prędkością.
Test kondycji:
- Uruchomiłem ten test z Netbeans 7.2 z wyjściem na konsolę
- Użyłem
System.nanoTime()
do pomiarów