Я створив дві матриці 1000
x 1000
:
Перша матриця: O
і #
.
Друга матриця: O
і B
.
Використовуючи наступний код, на першу матрицю знадобилося 8,52 секунди:
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("");
}
За допомогою цього коду для другої матриці знадобилося 259.152 секунди:
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("");
}
У чому причина різко різних часових пробігів?
Як запропоновано в коментарях, друк System.out.print("#");
займає лише 7.8871
секунди, тоді як System.out.print("B");
дає still printing...
.
Як і інші, хто вказував, що це працює для них нормально, я, наприклад, спробував Ideone.com , і обидва фрагменти коду виконуються з однаковою швидкістю.
Умови випробувань:
- Я провів цей тест від Netbeans 7.2 , з виходом на його консоль
- Я використовував
System.nanoTime()
для вимірювань