Neden baskı "B" baskı " daha önemli ölçüde daha yavaştır;#"?
1000
x iki matris 1000
oluÅŸturdum:
Ä°lk Matrix: O
#
.
Ä°kinci Matrix: O
B
.
Aşağıdaki kodu kullanarak, ilk matrix 8.52 saniye sürmüştür:
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("");
}
Bu kod ile, ikinci matrisin tamamlamak için 259.152 saniye sürdü:
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("");
}
Belirgin bir şekilde farklı çalışma saatleri ardındaki sebep nedir?
Açıklamalarda belirtildiği gibi System.out.print("#");
baskı System.out.print("B");
still printing...
sağlarken 7.8871 saniye sürer.
Onlar için normal olarak çalışıyor olduğuna işaret eden diğerleri gibi, örneğin Ideone.com denedim ve kod iki adet aynı hızda çalıştırın.
Test Koşulları:
- Eclipse bu test konsolun içine onun çıkış 7.2 koştum
- Ölçümler için
System.nanoTime()
kullandım
CEVAP
Tamamen spekülasyonword-wrapping yerine karakter kaydırma yapmaya çalışan bir terminal kullanıyorsun ve davranır sözcük olmayan bir karakter olarak kelime bir karakter ama #
B
. Ne zaman ulaşır satır sonuna kadar arar ve bir yerde mola hattı, gördüğü bir #
hemen ve sonsuza dek mutlu sonları var; oysa B
, hadi aramaya devam edin daha uzun ve daha fazla metin için kaydırma olabilir (örneğin pahalı biraz terminalleri, örneğin, çıkış backspaces, sonra Çıkış alanları üzerine harfleri olmak sarılmış).
Ama bu tamamen spekülasyon.
Neden &; while (i < n) " {} " ...
Bu "yeterli" rasgele algorit...
&; "(;;)&; Daha hızlı " quot;while...
Neden &; yoksa " someobj:& = = Hiçbiri...
Neden rbindlist "daha iyi&; rbind...