我生成了两个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"); // 只有这一行改变了
}
}
System.out.println("");
}
运行时间差异如此之大的原因是什么?
正如评论中建议的那样,只打印System.out.print("#");需要7.8871秒,而System.out.print("B");则给出still printing...。
正如其他人指出的那样,在Ideone.com上,这两段代码以相同的速度执行。
测试条件:
- 我从Netbeans 7.2运行了这个测试,输出到它的控制台
- 我使用了
System.nanoTime()进行测量