ฉันสร้างเมทริกซ์สองตัวของ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()
สำหรับการวัด